Plataforma Demostradora d’Automòbil Basada en...

137
Plataforma Demostradora d’Automòbil Basada en Microcontrolador. TITULACIÓ: Enginyeria Tècnica Industria en Electrònica Industrial. AUTOR: Josep Escoda Nolla . DIRECTOR: Enric Vidal Idiarte. DATA: Juny del 2008.

Transcript of Plataforma Demostradora d’Automòbil Basada en...

Page 1: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Plataforma Demostradora d’Automòbil Basada en Microcontrolador.

TITULACIÓ: Enginyeria Tècnica Industria en Electrònica Industrial.

AUTOR: Josep Escoda Nolla .

DIRECTOR: Enric Vidal Idiarte.

DATA: Juny del 2008.

Page 2: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Índex

Pàgina - 1 - de 137

Índex 1. Memòria Descriptiva. ...................................................................... - 6 -

1.1 Objectiu. ........................................................................................................ - 7 -

1.2 Antecedents. .................................................................................................. - 7 -

1.3 Titular del Projecte. ..................................................................................... - 7 -

1.4 Plataforma Demostradora d’Automòbil. ................................................... - 8 -

1.5 Principi de Funcionament. .......................................................................... - 8 -

1.5.1 Microcontrolador. ................................................................................... - 8 -

1.5.2 Accelerador/Fre i Visualització de Velocitat.......................................... - 8 -

1.5.3 Direcció i Visualització de la Direcció. .................................................. - 9 -

1.5.4 Velocitat de Creuer. ................................................................................ - 9 -

1.5.5 Intermitents. ............................................................................................ - 9 -

1.5.6 Il· luminació de Frenada. ......................................................................... - 9 -

1.5.7 Visualització en Pantalla LCD. .............................................................. - 9 -

1.5.6 Comunicació amb l’Ordinador. .................................................................. - 9 -

1.5.8 Font d’Alimentació. .............................................................................. - 10 -

1.6 Possibles Solucions i Solució Adoptada. .................................................. - 10 -

1.6.1 Elecció del Microcontrolador. .............................................................. - 10 -

1.6.1.1 Possibles Solucions. .......................................................................... - 10 -

1.6.1.2 Solució Adoptada. ............................................................................. - 10 -

1.6.1.2.1 Introducció al PIC24FJ64GA002. ........................................ - 11 -

1.6.1.2.2 Entorn de Programació. ........................................................ - 12 -

1.6.1.2.3 Mètode de Depuració i Programació. ................................... - 12 -

1.6.2 Accelerador/Fre i Visualització de Velocitat........................................ - 13 -

1.6.2.1 Possibles Solucions. .......................................................................... - 13 -

1.6.2.2 Solució Adoptada. ............................................................................. - 13 -

1.6.3 Direcció i Visualització de la Direcció. ................................................ - 14 -

1.6.3.1 Possibles Solucions. .......................................................................... - 14 -

1.6.3.2 Solució Adoptada. ............................................................................. - 14 -

1.6.4 Velocitat de Creuer. .............................................................................. - 15 -

1.6.4.1 Possibles Solucions. .......................................................................... - 15 -

1.6.4.1 Solució Adoptada. ............................................................................ - 15 -

1.6.5 Intermitents. .......................................................................................... - 15 -

1.6.5.1 Solució Adoptada. ............................................................................. - 15 -

1.6.6 Il· luminació de Frenada. ....................................................................... - 16 -

1.6.6.1 Possibles Solucions. .......................................................................... - 16 -

1.6.6.2 Solució Adoptada. ............................................................................. - 16 -

Page 3: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Índex

Pàgina - 2 - de 137

1.6.7 Visualització en Pantalla LCD. ............................................................ - 16 -

1.6.7.1 Possibles Solucions. .......................................................................... - 16 -

1.6.7.2 Solució Adoptada. ............................................................................. - 17 -

1.6.8 Comunicació Sèrie amb l’Ordinador. ................................................... - 17 -

1.6.6.1 Possibles Solucions. ......................................................................... - 17 -

1.6.6.2 Solució Adoptada. ............................................................................ - 18 -

1.6.9 Font d’Alimentació. .............................................................................. - 18 -

1.6.9.1 Possibles Solucions. .......................................................................... - 18 -

1.6.9.2 Solució Adoptada. ............................................................................. - 18 -

1.7 Disseny Final. ............................................................................................. - 19 -

1.8 Busos de Comunicacions. ......................................................................... - 20 -

1.8.1 Comunicació Sèrie RS-232 PC-Microcontrolador. ............................. - 20 -

1.8.2 Comunicació Via I2C. .......................................................................... - 23 -

1.8.3 Comunicació per Port Sèrie RS-232 amb Windows. ........................... - 25 -

2. Memòria de Càlcul. ........................................................................ - 26 -

2.1 El Microcontrolador PIC24FJ64GA002. ................................................. - 27 -

2.1.1 Característiques del Nucli. .................................................................... - 27 -

2.1.1.1 Arquitectura de 16 bits. ..................................................................... - 27 -

2.1.1.2 Tecnologia de Baix Consum. ............................................................ - 27 -

2.1.1.3 Opcions i Característiques de l’Oscil·lador. ..................................... - 27 -

2.1.1.4 Altres Característiques Especials. ..................................................... - 28 -

2.1.2 CPU. ..................................................................................................... - 30 -

2.1.2.1 Registres de Control de la CPU. ....................................................... - 31 -

2.1.3 Organització de la Memòria. ................................................................ - 32 -

2.1.3.1 Memòria de Programa. ..................................................................... - 32 -

2.1.3.2 Memòria de Dades. ........................................................................... - 33 -

2.1.4 Mòduls Perifèrics Utilitzats. ................................................................. - 35 -

2.1.4.1 El Controlador d’Interrupcions. ........................................................ - 35 -

2.1.4.1.1 Registres de control d’interrupcions. ..................................... - 36 -

2.1.4.2 Ports d’Entrada/Sortida. .................................................................... - 37 -

2.1.4.2.1 Registres de Control del Ports. ............................................. - 37 -

2.1.4.3 Timers. .............................................................................................. - 40 -

2.1.4.3.1 Registres de Control. ............................................................ - 41 -

2.1.4.4 Mòdul de Comparació. ..................................................................... - 42 -

2.1.4.5 UART (Universal Asynchronous Receiver/Transmitter). ................ - 43 -

2.1.4.5.1 Registres de Control. ............................................................ - 44 -

2.1.4.5.2 Generador de Bauds. ............................................................. - 45 -

2.1.4.6 I2C (Inter-Integrated Circuit). ........................................................... - 46 -

Page 4: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Índex

Pàgina - 3 - de 137

2.1.4.6.1 Mode Màster. ........................................................................ - 47 -

2.1.4.6.1 Transmissió en Mode Màster. ................................................ - 47 -

2.1.4.6.2 Registres de Control. ............................................................ - 47 -

2.1.4.6.3 Generador de Bauds. ............................................................. - 48 -

2.1.4.7 Conversor A/D de 10 bits. ................................................................ - 48 -

2.1.4.7.1 Registres de Control. ............................................................ - 49 -

2.2 Diagrames de Flux i Càlculs de cada Mòdul. .......................................... - 51 -

2.2.1 Accelerador/Fre i Visualització de Velocitat........................................ - 51 -

2.2.1.1 Diagrama de Flux. ............................................................................. - 52 -

2.2.1.2 Càlcul del Temps de Mostreig. ......................................................... - 53 -

2.2.1.3 Càlcul de la Velocitat del Vehicle. ................................................... - 54 -

2.2.1.4 Inicialització de la Visualització de Velocitat. ................................. - 56 -

2.2.2 Direcció i Visualització de la Direcció. ................................................ - 58 -

2.2.2.1 Diagrama de Flux. ............................................................................. - 58 -

2.2.2.2 Càlcul de la Direcció del Vehicle. .................................................... - 59 -

2.2.3 Velocitat de Creuer. .............................................................................. - 59 -

2.2.3.1 Diagrama de Flux. ............................................................................. - 60 -

2.2.4 Intermitents. .......................................................................................... - 61 -

2.2.4.1 Diagrama de Flux. ............................................................................. - 61 -

2.2.4.2 Càlcul de la Temporització dels Intermitents. .................................. - 62 -

2.2.4.3 Càlcul dels Filtres dels Intermitents. ................................................. - 62 -

2.2.5 Il· luminació de frenada. ........................................................................ - 63 -

2.2.5.1 Diagrama de flux. ............................................................................. - 63 -

2.2.5.2 Càlcul del període del PWM. ............................................................ - 64 -

2.2.5.3 Càlcul del nou cicle de treball. .......................................................... - 64 -

2.2.6 Visualització en pantalla LCD. ............................................................. - 65 -

2.2.6.1 Diagrama de Flux. ............................................................................. - 65 -

2.2.6.2 Càlcul del Baud Rate. ....................................................................... - 65 -

2.2.7 Comunicació Sèrie amb l’Ordinador. ................................................... - 66 -

2.2.7.1 Diagrama de Flux. ............................................................................. - 66 -

2.2.7.2 Càlcul del Baud Rate de la Comunicació UART. ............................ - 67 -

2.2.7.3 Adaptació de la Velocitat. ................................................................. - 67 -

2.2.7.4 Sincronització de la Comunicació. ................................................... - 67 -

2.3 Implementació Física del Sistema. ........................................................... - 68 -

2.3.1 Muntatge. .............................................................................................. - 69 -

2.3.2 Posada en Funcionament. ..................................................................... - 71 -

3. Plànols. ............................................................................................ - 72 - 4. Pressupost. ...................................................................................... - 80 -

Page 5: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Índex

Pàgina - 4 - de 137

4.1 Introducció. ................................................................................................ - 81 -

4.2 Llistat de Preus Unitaris. ........................................................................... - 81 -

4.2.1 Capítol 1: Software. .............................................................................. - 81 -

4.2.2 Capítol 2: Placa Principal. .................................................................... - 81 -

4.2.3 Capítol 3: Placa d’Alimentació............................................................. - 83 -

4.2.4 Capítol 4: Components Variats. ........................................................... - 83 -

4.2.5 Capítol 5: Elements del Panell.............................................................. - 84 -

4.2.6 Capítol 6: Mà d’Obra. ........................................................................... - 84 -

4.3 Quadres de Descomposats. ........................................................................ - 85 -

4.3.1 Capítol 1: Software ............................................................................... - 85 -

4.3.2 Placa Principal. ..................................................................................... - 85 -

4.3.3 Placa d’Alimentació. ............................................................................ - 87 -

4.3.4 Components Variats. ............................................................................ - 87 -

4.3.5 Elements del Panell .............................................................................. - 89 -

4.3.6 Mà d’Obra ............................................................................................ - 90 -

4.4 Resum del Pressupost. ............................................................................... - 91 -

5. Plec de Condicions. ........................................................................ - 92 -

5.1 Reunits ........................................................................................................ - 93 -

5.2 Exposen ....................................................................................................... - 93 -

5.2.1 Primer ................................................................................................... - 93 -

5.2.2 Segon .................................................................................................... - 93 -

5.3 Clàusules ..................................................................................................... - 93 -

5.3.1 Primera.- Objectius ............................................................................... - 93 -

5.3.2 Segona.- Objecte de l’acord.................................................................. - 93 -

5.3.3 Tercera.- Condicions d’acceptació del treball ...................................... - 94 -

5.3.4 Quarta.- Extensió de la col·laboració ................................................... - 94 -

5.3.5 Cinquena.- Contingut dels programes específics ................................. - 94 -

5.3.6 Sisena.- Coordinadors / Responsables .................................................. - 94 -

5.3.7 Setena.- Emissió d’informes ................................................................. - 95 -

5.3.8 Vuitena.- Durada .................................................................................. - 95 -

5.3.9 Novena.- Principis d’actuació .............................................................. - 95 -

5.3.10 Desena.- Resolució de conflictes .......................................................... - 95 -

6. Bibliografia. .................................................................................... - 97 - 6.1 Llibres Consultats. ..................................................................................... - 98 -

6.2 Pàgines Web Consultades. ........................................................................ - 98 -

7. Annexes. .......................................................................................... - 99 - 7.1 Tractament dels Ports amb les Funcions de Windows ......................... - 100 -

7.1.1 Funcions d’E/S. .................................................................................. - 100 -

Page 6: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Índex

Pàgina - 5 - de 137

7.2 Programació amb MPLAB IDE v8.0. .................................................... - 105 -

7.2.1. Creació d’un Projecte. ........................................................................... - 105 -

7.2.2. Creació d’un Arxiu de Treball. ............................................................. - 105 -

7.2.3. Simulador. ............................................................................................. - 107 -

7.2.3.1 Eina Stimulus. ................................................................................. - 109 -

7.2.4. Depuració i Programació amb MPLAB ICD 2. .................................... - 110 -

7.3 Manual d’Usuari del Programa Vehicle.exe. ........................................ - 112 -

7.4 Codi Font Microcontrolador. .................................................................. - 114 -

7.4.1 Definicions.h. ..................................................................................... - 114 -

7.4.2 Inicialitzacions.h. ................................................................................ - 115 -

7.4.3 codi_principal.c. ................................................................................. - 118 -

7.5 Codi Font Interfície PC. .......................................................................... - 127 -

7.5.1 Vehicle.cpp............................................................................................. - 127 -

Page 7: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Plataforma Demostradora d’Automòbil Basada en Microcontrolador

Pàgina - 6 - de 137

1. Memòria Descriptiva.

Page 8: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 7 - de 137

1.1 Objectiu.

L’objectiu del projecte és dissenyar i realitzar el muntatge d’una plataforma entrenadora basada en microcontrolador amb la finalitat de ser utilitzada en l’àmbit docent pels alumnes de segon curs d’enginyeria tècnica industrial especialitat en electrònica industrial. Aquesta plataforma ha d’estar pensada per a poder desenvolupar amb ella una sèrie de pràctiques que permetin als alumnes familiaritzar-se amb la programació de microcontroladors.

1.2 Antecedents.

En el pla d’estudi actual de la titulació d’Enginyeria Tècnica Industrial especialitat en Electrònica Industrial hi figuren diverses assignatures de programació. Concretament, a segon curs existeixen dues assignatures força relacionades entre sí que tracten la programació a baix nivell, a diferència del que es veu a primer curs. Aquestes assignatures són Informàtica industrial I i Electrònica Digital II. La primera està enfocada principalment a donar solucions al control de processos industrials, com pot ser la utilització d’interrupcions, enquestes, etc. La segona està orientada a la programació en llenguatge assemblador i el coneixement de l’arquitectura interna dels microcontroladors, basant-se en el 68000 de Motorola.

Ambdues assignatures tenen les seves corresponents classes pràctiques. A Informàtica Industrial I es divideix en diferents blocs la implementació del joc popularment conegut Pong. Aquestes pràctiques es realitzen sobre la plataforma d’un ordinador personal utilitzant el llenguatge de programació C en sistema operatiu DOS. Les pràctiques d’Electrònica digital II son bastant diferents: consisteixen en la programació de diferents mòduls (cada grup d’alumnes en programa un) basats en microcontrolador. Els alumnes han de fer ús dels diferents registres i accessos a les diferents memòries per tal que els sistemes facin allò per al que han estat dissenyats.

Amb els nous plans d’estudi d’àmbit europeu que es preveuen en un curt període de temps, la titulació d’enginyer tècnic passarà a ser un grau de quatre cursos i, donada aquesta diferència d’hores lectives, també hi haurà canvis ens els programes de les assignatures. En el cas de l’Escola Tècnica d’Enginyers de Tarragona, en l’especialitat d’electrònica, es preveu fer una matèria que tracti els sistemes basats en microcontroladors, englobant les actuals dues assignatures anteriorment esmentades. Per tant, la idea és tenir una plataforma de pràctiques en la que es pugui implementar tot el que s’explicarà en aquesta assignatura.

1.3 Titular del Projecte.

El titular del present projecte és:

• Nom: Escola Tècnica Superior d’Enginyeria URV Tarragona. • CIF: 47657489 V • Adreça: Av. Països catalans S/N. Tarragona. • Representant: Josep Escoda Nolla. • Telèfon: +34 977 456 539.

Page 9: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 8 - de 137

1.4 Plataforma Demostradora d’Automòbil.

La plataforma entrenadora simula el funcionament d’un automòbil. Incorpora tot un seguit de mòduls separats per tal de subdividir les futures tasques que es demanaran en parts diferenciades.

Els mòduls que composen la plataforma són:

• Simulació i control de la velocitat del vehicle. • Simulació i control de la direcció del vehicle. • Control de la velocitat de creuer. • Intermitents. • Il· luminació de frenada. • Visualització en pantalla LCD via I2C. • Comunicació sèrie amb l’ordinador.

Es pretén que la plataforma entrenadora tingui com a encarregat principal de la gestió de dades un microcontrolador. S’utilitzaran diferents funcions del microcontrolador intentant exprimir les seves possibilitats.

Es vol que la plataforma compleixi la seva funció didàctica, i per això s’han de tenir en compte alguns factors:

• Ha de ser un mòdul compacte, considerablement resistent i durador en el temps.

• Ha de permetre veure els resultats de la programació d’una manera visual i il· lustrativa.

• Ha d’ésser fàcil de programar i permetre la possibilitat de fer proves a casa. • És preferible que la plataforma contingui tot el necessari per a funcionar

(sense dependre d’altres dispositius com podria ser una font d’alimentació de laboratori).

Per tal de complir aquests requisits s’han hagut de prendre tota una sèrie de decisions de disseny.

1.5 Principi de Funcionament.

1.5.1 Microcontrolador.

S’ha decidit utilitzar un microcontrolador que controli tots els diferents mòduls de manera eficient i el més optimitzada possible. El codi del programa del microcontrolador serà en llenguatge de programació C.

1.5.2 Accelerador/Fre i Visualització de Velocitat.

S’ha decidit que per simular els pedals d’accelerador i fre del vehicle s’utilitzaran dos potenciòmetres. La visualització de velocitat, s’ha pensat fer mitjançant una sèrie de LEDs disposats en cercle i que s’encenguin i apaguin un a un consecutivament. D’aquesta

Page 10: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 9 - de 137

manera, es vol que variï la velocitat d’encesa i apagada dels dispositius lluminosos donant l’efecte visual d’un augment i una disminució de la velocitat.

1.5.3 Direcció i Visualització de la Direcció.

La direcció del vehicle es realitzarà també per mitjà d’un potenciòmetre a mode de volant. La visualització de la direcció es farà també amb una filera de LEDs que s’il· luminaran un a un depenent del gir del potenciòmetre de direcció.

1.5.4 Velocitat de Creuer.

El control de velocitat es fa mitjançant dos potenciòmetres, com ja s’ha dit. Però es vol presentar l’opció de poder donar una consigna de velocitat de creuer, que s’ha decidit que es farà mitjançant un parell de polsadors, un per augmentar la consigna i un per reduir-la. Aquest control de velocitat es desactivarà si es torna al mode de control accelerador/fre.

1.5.5 Intermitents.

El dispositiu comptarà també amb un parell de polsadors per al control dels intermitents. La visualització d’encesa i apagada d’intermitents es realitzarà amb dos LEDs parpellejant.

1.5.6 Il· luminació de Frenada.

Ja s’ha dit que el fre es comanda amb un potenciòmetre. El que es vol és que quan l’usuari utilitzi el fre, es reflecteixi la intensitat de la seva frenada amb un dispositiu lluminós que permeti variar la intensitat de la llum segons la frenada. S’ha decidit utilitzar una bombeta per aquests efectes.

1.5.7 Visualització en Pantalla LCD.

Es volen presentar dades en una pantalla LCD disposada en el panell de l’entrenador. Per exemple, es vol fer una mostra continua de la velocitat del vehicle.

1.5.6 Comunicació amb l’Ordinador.

Per tal d’enviar dades a l’ordinador, s’ha optat per utilitzar una comunicació sèrie RS-232. Caldrà doncs, tenir una plataforma de visualització de les dades en un PC. Aquesta plataforma per al PC serà programada en llenguatge C++ Builder 5.0.

Page 11: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 10 - de 137

1.5.8 Font d’Alimentació.

En quant a l’alimentació dels circuits interns, s’ha decidit que es vol una alimentació integrada en l’entrenador. Així doncs, tindríem diversos mètodes per realitzar-la, dividits en dos grans blocs: Alimentació a partir de la xarxa o bé a partir de bateries.

Es descarta l’alimentació amb bateries ja que l’àmbit normal de funcionament de l’entrenador serà un laboratori proveït de preses de xarxa. Presa aquesta decisió, tenim diferents tipus de fonts alimentades a partir de la xarxa, tindrem en compte dos grups diferenciats:

Font regulada lineal.

Font commutada.

El primer cas resultaria una bona solució en quant a l’alimentació obtinguda, però té dos grans inconvenients: Necessitat d’un transformador reductor (força voluminós) i preu elevat. Una font de tipus commutat pot ésser també una solució efectiva, més econòmica i força menys voluminosa. Per tant sembla preferible la utilització d’un convertidor commutat alhora de solucionar l’alimentació de la plataforma.

1.6 Possibles Solucions i Solució Adoptada.

S’han tingut en compte diverses possibilitats a l’hora de decidir el funcionament definitiu de cada mòdul de la plataforma simuladora. També s’ha decidit quin microcontrolador s’utilitzarà.

1.6.1 Elecció del Microcontrolador.

1.6.1.1 Possibles Solucions.

Com que “tradicionalment” s’han utilitzat a les assignatures d’Informàtica Industrial 1 i Electrònica Digital 2, microprocessadors Intel i Motorola respectivament, es va pensar en seguir utilitzant-los per a realitzar aquest projecte. L’avantatge del Motorola 68000, el microcontrolador que s’explica a Electrònica Digital 2, és la facilitat de comprensió didàctica donades les seves característiques d’arquitectura interna. No obstant, s’ha descartat l’opció ja que es pretén donar un gir cap a la programació amb dispositius PIC de la casa Microchip, molt presents en el mercat actual, amb facilitat d’accés a les eines de desenvolupament i amb arquitectura semblant al Motorola 68000.

1.6.1.2 Solució Adoptada.

Es creu que una opció encertada és la utilització d’un microcontrolador de la casa Microchip, ja que la gamma PIC presenta una gran varietat de dispositius, des dels més simples als més potents, entre els quals es podria escollir el més adequat per a l’aplicació que es vol implementar. S’ha de tenir en compte quines necessitats tenim:

• Conversor A/D de múltiples canals.

Page 12: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 11 - de 137

• Ports d’Entrada/Sortida suficients. • Gestió d’interrupcions.

• Possibilitat d’interrupcions externes. • Timers suficients. • Sortida PWM.

• Comunicació I2C. • Mòdul UART.

Una família de PIC que compleix amb els requeriments exposats és la família PIC24F, de recent creació i poc explorada en l’àmbit de la URV. Per tant, l’endinsament en les peculiaritats d’aquesta nova família de microcontroladors és un motiu engrescador a l’hora de seleccionar-la. Més concretament, s’ha optat per seleccionar el PIC24FJ64GA002, el diagrama de pins del qual es mostra a la figura 1-1.

Figura 1-1. Diagrama de pins del PIC24FJ64GA002.

1.6.1.2.1 Introducció al PIC24FJ64GA002. A la taula 1-1 es mostren les característiques generals del microcontrolador

PIC24FJ64GA002.

Característiques PIC24FJ64GA002 Freqüència d’operació DC-32 MHz (màxima) Memòria de programa (bytes) 64 K Memòria de programa (instruccions) 22016 Memòria de dades(bytes) 8192 Fonts d’interrupció 43 Ports E/S Ports A,B Total pins E/S 21 Timers 5 Canals Input Capture 5 Canals Output compare/PWM 5 Input change notification interrupt 21 Comunicacions sèrie UART SPI I2C

2 2 2

Comunicacions paral·lel (PMP/PSP) Sí

Page 13: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 12 - de 137

JTAG Scan Sí Mòdul A/D 10-Bit (canals d’entrada) 10 Comparadors analògics 2 Remappable Pins 16 Set d’instruccions 76 instruccions bàsiques, modes de

direccionament múltiples. Encapsulat 28 Pins SPDIP/SSOP/SOIC/QFN

Taula 1-1. Característiques del PIC24FJ64GA002.

Tot i que el PIC en qüestió té nomes 28 pins, la majoria estan multiplexats, així que un mateix pin ens pot servir com a port de E/S o com a pin associat a un perifèric.

1.6.1.2.2 Entorn de Programació. L’entorn de programació que utilitzarem serà l’MPLAB IDE v8.0 de Microchip,

programa que permet l’elaboració de projectes amb diferents codis font, llibreries, etc. A més presenta l’opció de fer simulacions amb l’eina MPLAB SIM. Permet també simular entrades i sortides amb l’eina Stimulus, generant senyals de clock, senyals asíncrons, etc. Una altra eina útil és el visual initializer, que permet la inicialització dels diferents perifèrics del microcontrolador sense la necessitat d’escriure cap codi. Simplement s’ha d’anar escollint quines opcions inicials es desitgen i a partir d’aixo ja es genera un codi automàticament. A l’annex 7.2 s’hi mostren exemples d’utilització de les dues utilitats esmentades.

El compilador utilitzat serà l’MPLAB C30, un compilador de C orientat als PIC 24 i dsPIC.

1.6.1.2.3 Mètode de Depuració i Programació. L’MPLAB IDE permet depurar programes mitjançant un depurador/programador de

Microchip anomenat MPLAB ICD 2 (In-Circuit Debugger). Permet depurar codis font tant en llenguatge C com en Assemblador, amb l’opció de fer execucions pas a pas i aturar el programa mitjançant breakpoints. A la figura 1-2 es mostra una imatge del dispositiu.

Figura 1-2. MPLAB ICD 2.

Page 14: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 13 - de 137

1.6.2 Accelerador/Fre i Visualització de Velocitat.

1.6.2.1 Possibles Solucions.

Des d’un primer moment es va decidir implementar les funcions de fre i accelerador amb potenciòmetres. Una opció era accelerar i frenar amb el mateix potenciòmetre, en disminuir i augmentar la seva resistència. Aquesta opció va quedar descartada ja que no s’aproximava suficientment al comportament real d’un cotxe.

En quant a la visualització de la roda de velocitat, es va pensar en utilitzar els pins dels ports de sortida per connectar-hi un LED a cada un, de manera que s’anessin activant consecutivament. No és una solució viable ja que ocuparia massa pins del microcontrolador i no es podrien utilitzar totes les funcions que es voldria.

1.6.2.2 Solució Adoptada.

L’acceleració i la frenada tenen un funcionament que es pot descriure de la següent manera:

Inicialment la roda de visualització de velocitat té tots els LEDs apagats, fet que indicarà que el cotxe està en situació de repòs. S’està suposant que accelerador i fre estan en la posició inicial. Si hom comença a accelerar la velocitat de la roda de LEDs des d’una velocitat mínima, aquesta s’anirà incrementant fins a assolir la velocitat que marqui la posició final a la qual s’hagi portat el potenciòmetre, tot seguint una rampa d’acceleració programada via software. En deixar anar l’accelerador, se suposarà que el vehicle té una pèrdua de velocitat encara que no es premi el fre, que segueix una rampa de pendent contrari a la d’acceleració.

Anant a una certa velocitat i havent deixat anar l’accelerador, es prem el fre amb una certa intensitat. La velocitat va disminuint com més temps premem el fre, tot seguint una rampa de pendent negatiu programada via software.

En el supòsit que es premés el fre alhora que l’accelerador, la situació es solucionarà deixant que la frenada nomes pugui dur el cotxe a la velocitat que indiqui la posició on es manté l’accelerador.

Per dur a terme aquest funcionament el microcontrolador haurà de detectar la posició de l’accelerador i del fre mitjançant conversions A/D. Els ports de sortida seran els encarregats de la visualització en la roda de LEDs giratòria.

S’ha decidit utilitzar les patilles AN0 i AN1 per a les entrades analògiques d’accelerador i fre.

Per a la visualització dels LEDs s’ha decidit usar dos patilles del microcontrolador per a controlar 8 LEDs a través d’un Shift Register. S’utilitzen dues patilles del Port B configurades com a sortida, una per a generar el senyal de clock del Shift Register (que marcarà la velocitat de gir) i l’altra per a inicialitzar l’engegada dels LEDs, a través de l’entrada DATA del registre de desplaçament.

La figura 1-3 mostra el diagrama de blocs de les sortides del microcontrolador, el Shift Register i els LEDs de visualització.

Page 15: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 14 - de 137

Figura 1-3. Diagrama de blocs Shift Register.

1.6.3 Direcció i Visualització de la Direcció.

1.6.3.1 Possibles Solucions.

Igual que en el cas de l’accelerador i fre, des del primer moment es va decidir d’emprar un potenciòmetre per al control de la direcció. Respecte a la visualització en panell, es va pensar en una filera de LEDs (amb nombre imparell per que hi hagi posició central) que s’il· luminessin un a un segons la direcció marcada pel potenciòmetre. Una altra opció podria ser el mostratge per pantalla LCD, que no es descarta d’implementar un cop decidida la comunicació amb aquest dispositiu.

1.6.3.2 Solució Adoptada.

Inicialment els LEDs de visualització de la direcció estaran indicant la direcció que marqui la posició última en que s’ha deixat el potenciòmetre de control. A partir d’aquí, qualsevol gir d’aquest potenciòmetre portarà a la modificació de la direcció i, per tant, a la modificació de la disposició dels LEDs de visualització.

Aquest procés també està controlat pel microcontrolador a través del conversor A/D, així com pels ports de sortida pels indicadors lluminosos.

S’ha decidit utilitzar la patilla AN12 per a l’entrada analògica de la direcció.

Per a la visualització de la filera de 7 LEDs s’utilitzaran 3 sortides del Port A (patilles RA2, RA3 i RA4). Entremig hi col·locarem un demultiplexor, que a partir de les 3 entrades provinents de les sortides del PIC ens engegarà el LED corresponent a la sortida del canal seleccionat. A la figura 1-4 es mostra l’esquema del demultiplexor utilitzat.

Page 16: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 15 - de 137

Figura 1-4. Diagrama de blocs Demultiplexor.

1.6.4 Velocitat de Creuer.

1.6.4.1 Possibles Solucions.

Per a la gestió de la velocitat de creuer es podia triar entre diferents opcions. Per exemple, es pot generar una interrupció en prémer els polsadors o bé realitzar una enquesta per veure si els polsadors estan pitjats o no.

1.6.4.1 Solució Adoptada.

Es realitzarà un enquesta per a detectar els polsos dels accionadors de la velocitat de creuer. Inicialment la velocitat de creuer estarà desactivada. En cas que s’activi, es deshabilitarà el control de velocitat normal, i la consigna de velocitat la marcarà la consigna de velocitat de creuer. Com que canviarà la velocitat del vehicle, per arribar a la consigna també es seguirà una rampa d’acceleració o de frenada com en el cas d’acceleració i frenada normals. Aquesta consigna de velocitat de creuer podrà anar entre els 80 km/h fins als 140 km/h, amb salts de 10 km/h.

Prement un dels polsadors s’augmentarà la consigna, mentre que prement l’altre es disminuirà. Si es premen els dos polsadors alhora es tornarà al mode d’acceleració i frenada normal.

Per a la visualització de la consigna, s’ha decidit enviar-la a la pantalla LCD.

Els accionaments de la velocitat de creuer s’assignen a les patilles RB4 i RB5.

1.6.5 Intermitents.

1.6.5.1 Solució Adoptada.

Inicialment els indicadors dels intermitents estaran apagats. Es disposarà de dos polsadors, un per a cada intermitent, que en ésser pitjats un cop engegaran l’intermitent associat i, en prémer per segon cop, l’aturaran.

En el cas que, havent un dels dos intermitents engegats, es premi el polsador de l’altre intermitent, el que estava encès s’apagarà i es posarà en marxa l’últim al que se li ha donat ordre d’engegada.

Page 17: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 16 - de 137

Els accionaments dels intermitents funcionaran per interrupció a través de les patilles RP2 i RP3. El microcontrolador presenta l’opció de configurar les potes RPn (Remmappable Peripheral) com a entrades d’interrupció externa. La sortida de la il· luminació dels intermitents es farà a traves dels pins del Port B RB10 i RB11.

1.6.6 Il· luminació de Frenada.

1.6.6.1 Possibles Solucions.

Inicialment es va pensar en utilitzar un LED o una malla de LEDs connectats a una sortida PWM del microcontrolador, de manera que quan es premés el fre es veiés un canvi de lluminositat. Això, però, va ser descartat ja que amb dispositius LED no s’aconseguia veure l’efecte desitjat.

1.6.6.2 Solució Adoptada.

Mentre el fre està fora d’ús la il· luminació de frenada està apagada. A mesura que frenem, la llum s’engegarà més o menys segons la intensitat de la frenada.

Per a la il· luminació de frenada s’utilitzarà el pin RP13 del PIC configurat com a sortida PWM. S’anirà canviant el cicle de treball del PWM per augmentar o disminuir la intensitat de la llum. L’element lluminós utilitzat serà una bombeta d’incandescència connectada al drenador d’un transistor MOSFET de canal N. La sortida PWM del microcontrolador incideix a la porta del transistor, de manera que hi fa circular un corrent variable segons el cicle de treball del senyal de sortida del microcontrolador.

Figura 1-5. Diagrama de blocs Bombeta de fre.

1.6.7 Visualització en Pantalla LCD.

1.6.7.1 Possibles Solucions.

La visualització en pantalla LCD inicialment es pensava fer controlada per port paral·lel (8 línies de dades i 3 de control). Com que es disposava de pocs pins lliures, es va pensar en l’opció d’utilitzar el port paral·lel reduït de 4 bits de dades i 3 línies de control.

Page 18: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 17 - de 137

Tot i així segueix sent una quantitat massa elevada de pins, cosa que no permet realitzar aquest tipus de comunicació.

Una altra opció seria la utilització d’una comunicació SPI (Serial Peripheral Interface) que pot utilitzar entre 3 i 4 línies de comunicació. També es descarta perquè la comunicació I2C es pot resoldre amb només dues línies.

1.6.7.2 Solució Adoptada.

La comunicació amb la pantalla LCD es realitza per mitjà del bus I2C. La dada essencial que enviarà el microcontrolador a la pantalla serà la velocitat actual del vehicle. També s’hi faran aparèixer diferents missatges informatius de successos que tinguin lloc a la planta, o entre la planta i l’ordinador, així com la consigna de creuer.

S’ha decidit que per implementar la comunicació via I2C s’utilitzaran els pins RP8 (Clock) i RP9 (dades).

Figura 1-6. Diagrama de blocs pantalla LCD.

1.6.8 Comunicació Sèrie amb l’Ordinador.

1.6.6.1 Possibles Solucions.

Es creu convenient la utilització d’una comunicació amb el protocol RS-232, utilitzant la UART del PIC. Ara bé, la interfície del PC (accés als ports) es pot resoldre de diverses maneres:

• Utilitzant les API de Windows És la tècnica més aconsellable si es vol que els programes siguin estables i portables.

• Accés directe a hardware Permet adaptar ràpidament els programes desenvolupats en DOS. No funciona en l’entorn Windows NT, XP ni Vista. S’han de desenvolupar les funcions inportb() i outportb().

• Accés mitjançant controlador Requereix el desenvolupament d’un controlador de dispositiu. S’ha de crear un controlador en format DLL.

L’accés amb les funcions API de Windows s’assembla força al tractament de fitxers.

Page 19: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 18 - de 137

1.6.6.2 Solució Adoptada.

S’ha decidit que la comunicació amb l’ordinador es realitzaria mitjançant el port sèrie de l’ordinador i el perifèric UART del PIC ja que és un sistema de comunicació molt utilitzat i didàctic. Les dades que enviarà el microcontrolador seran:

• Velocitat actual. • Direcció actual. • Posta en marxa i apagada d’intermitents.

Des del programa de l’ordinador es podran donar algunes ordres, com són:

• Engegada i aturada d’intermitents. • Missatges d’esdeveniments a la LCD.

S’ha decidit que per a la implementació de la comunicació a través de la UART s’utilitzaran els pins RP6 (Enviament) i RP7 (Recepció) del microcontrolador.

Per a realitzar la connexió entre PIC i Port sèrie (amb connectors DB9) es necessita una etapa d’adaptació del senyal, donat que l’ordinador treballa amb tensions entre +/- 9 V i +/- 15 V i el PIC24FJ64GA002 treballa amb tensions de 0 a 3,3 V. Aquest tipus d’etapes adaptadores s’anomenen Transceivers/Receivers. El dispositiu triat és el MAX-232, que es pot veure a la figura 1-11.

Per a la interfície amb l’ordinador es crearà un programa en llenguatge C++ Builder 5.0. S’ha decidit aquest llenguatge ja que permet crear programes per a entorn Windows amb facilitat d’incorporació d’eines i components que ajuden a la visualització, cosa que interessa en el propòsit del projecte. L’accés als ports amb aquest tipus de programació es farà amb les funcions API de Windows.

1.6.9 Font d’Alimentació.

Ja s’ha dit en l’apartat de decisions de disseny que es prefereix una font d’alimentació commutada. Així doncs, es tenen diferents opcions:

1.6.9.1 Possibles Solucions.

Es pot triar, per exemple, l’opció de dissenyar una font commutada expressament per a l’aplicació. Una altra opció seria convertir els senyals de xarxa a contínua i utilitzar un convertidor commutat integrat DC-DC. Per últim, Es podria utilitzar una font commutada integrada aïllada directa, que converteixi la tensió de xarxa al valor desitjat de continua.

1.6.9.2 Solució Adoptada.

S’ha decidit utilitzar una font commutada integrada aïllada amb entrada la tensió de xarxa i sortida de 5 V. Donat que algunes parts del circuit (com a mínim el microcontrolador) s’alimentaran a tensió 3,3 V, s’ha decidit col·locar un regulador que permeti disposar de les dues sortides: una de 5 volts directa des de la font commutada, i una de 3,3 V a la sortida del regulador.

Page 20: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 19 - de 137

Figura 1-7. Diagrama de blocs font d’alimentació.

1.7 Disseny Final.

Finalment, la distribució de pins del microcontrolador queda definida com es mostra en la figura 1-8.

Figura 1-8. Diagrama de connexions final.

Page 21: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 20 - de 137

1.8 Busos de Comunicacions.

1.8.1 Comunicació Sèrie RS-232 PC-Microcontrolador.

Norma RS-232.

La norma RS-232 és una de les més populars que s’utilitzen en la comunicació sèrie i és la que s’utilitza en els PCs. Avui en dia, està amplament superada per la transmissió sèrie USB, de manera que està remetent el seu ús (per exemple, ja no s’implementa en ordinadors portàtils). Es va desenvolupar a la dècada dels 60 per gestionar la interconnexió de terminals i mòdem.

La norma RS-232 resol tres aspectes en la comunicació que s’estableix entre el DTE, Equip Terminal de Dades, per exemple un PC i el DCE, Equip per a la comunicació de dades, per exemple un microcontrolador:

• Característiques elèctriques del senyal: S’estableix que la longitud màxima entre el DTE i el DCE no ha de superar els 15 m i la velocitat màxima de transmissió es de 20000 bps. Els nivells lògics no són compatibles amb TTL, considerant:

1 lògic entre -3 V i -15 V. 0 lògic entre +3 V i +15 V.

• Característiques mecàniques dels connectors: S’utilitza un connector de 25 pins, DB25 o de 9 pins, DB9. El connector mascle identifica el DTE i el connector femella el DCE.

• Descripció funcional dels senyals utilitzats: Els senyals estan bàsicament dividides en dos grups.

Senyals primaris: Normalment s’utilitzen per a la transferència de dades. Senyals secundaris: S’utilitzen per al control de la informació que s’ha de

transferir.

La norma RS-232 està definida tant per a la transmissió síncrona com per a l’asíncrona, però quan s’utilitza aquesta última, només es fa servir un conjunt de terminals.

Velocitat.

La velocitat de transmissió està estandarditzada segons la norma RS-232C en bauds:

75, 110, 150, 300, 600, 1200, 2400, 4800, 9600 i 19200 b.

Estructura d’un Caràcter.

• En mode asíncron: Bit Start (primera transició de ‘1’ a ‘0’. 1,1.5,2 bits Stop. Paritat parell, paritat senar o sense paritat.

Page 22: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 21 - de 137

Figura 1-9. Seqüència de transmissió asíncrona d’un caràcter per RS-232.

• En mode síncron: La freqüència del receptor es 16 o 64 vegades major que la del emissor. Sincronització mitjançant circuits de la UART.

Figura 1-10. Seqüència de transmissió síncrona d’un caràcter per RS-232.

Connectors.

Figura 1-11-1. Connector DB-9 Figura 1-11-2. Connector DB-25

Els senyals d’entrada i sortida dels connectors són els mostrats a la següent taula.

Page 23: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 22 - de 137

Número de Pin Senyal Descripció E/S DB-25 DB-9

1 1 - Massa xassís - 2 3 TxD Transmit Data S 3 2 RxD Receive Data E 4 7 RTS Request To Send S 5 8 CTS Clear To Send E 6 6 DSR Data Set Ready E 7 5 SG Signal Ground - 8 1 CD/DCD (Data) Carrier Detect. E 15 - TxC Transmit Clock S 17 - RxC Receive Clock E 20 4 DTR Data Terminal Ready S 22 9 RI Ring Indicator E 24 - RTxC Transmit/Receive Clock S

Taula 1-2.Característiques dels connectors DB-9 i DB-25.

Adaptador de Tensions.

La connexió del PC amb el microcontrolador PIC no pot ser directa ja que els senyals elèctrics utilitzats per a la transmissió d’informació per part del PC estan entre +3 i +15 V per a l’estat actiu i de -3 a -15 V per a l’estat inactiu. Per tal d’adaptar les tensions del PIC i les del PC s’utilitza el xip MAX232. A la figura 1-12 es mostra el mode de connexió del MAX232.

Figura 1-12. Connexió MAX232.

Page 24: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 23 - de 137

1.8.2 Comunicació Via I2C.

El bus I2C és un estàndard que facilita la comunicació entre diferents dispositius. Només requereix dues línies de senyal. És un bus multi-màster, el que significa que es poden connectar diversos dispositius i que tots ells poden actuar com a màster.

La metodologia de comunicació I2C és en sèrie i sincrònica. Un dels senyals marca el temps (clock) i l’altra s’utilitza per a intercanviar dades.

Descripció dels Senyals.

• SCL (System Clock): és la línia de polsos de rellotge que sincronitza el sistema. • SDA (System Data): és la línia per on circulen les dades entre els dispositius. • GND : massa comuna de la interconnexió entre els diferents dispositius penjats al

bus.

Les línies SDA i SCL són de tipus drenador obert. S’han de polaritzar a nivell alt (mitjançant resistències de pull-up). El diagrama de la figura 1-13 mostra l’estructura d’un sistema de comunicació via I2C.

Figura 1-13. Diagrama de blocs comunicació I2C.

Les dues línies del bus estan a nivell lògic alt quan estan inactives.

Protocol de Comunicació del Bus I2C.

Havent diversos dispositius connectats sobre el bus s’ha de respectar un protocol per a poder establir comunicació a través d’aquest. Per això, existeixen dispositius mestres i dispositius esclaus. Només els dispositius mestres poden iniciar una comunicació.

La condició inicial de bus lliure es dóna quan les dues línies estan en estat lògic alt. En aquest estat qualsevol dispositiu mestre pot ocupar-lo, establint la condició d’inici (Start). Aquesta condició es presenta quan un dispositiu mestre posa a estat baix la línia de dades (SDA), però deixant en estat alt la línia de rellotge (SCL).

Figura 1-14. Seqüència d'inici.

Page 25: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 24 - de 137

El primer byte que es tramet desprès de la condició d’inici conté set bits que componen la direcció de l’esclau que es vol seleccionar, i el vuitè bit indica si l’operació que es vol realitzar amb ell és de lectura o d’escriptura.

Si el dispositiu, la direcció del qual correspon a la que s’indica en els 7 bits, està present en el bus, aquest contesta amb un bit a nivell baix situat immediatament a continuació del vuitè bit que ha enviat el dispositiu mestre. Aquest bit de reconeixement (ACK) indica al dispositiu mestre que l’esclau reconeix la sol·licitud i que està en condicions de comunicar-se. Aquí la comunicació s’estableix en ferm i comença l’intercanvi d’informació entre els dispositius.

Figura 1-15. Seqüència d’enviament de la direcció de l’esclau.

Si el bit de lectura/escriptura (R/W) s’havia posat a nivell lògic baix (escriptura), el dispositiu mestre envia dades al dispositiu esclau. Això es manté mentre continu i rebent senyals de reconeixement, i el contacte conclou quan s’hagin tramés totes les dades.

En el cas contrari, si el bit de lectura/escriptura s’havia posat a nivell alt (lectura), el dispositiu mestre genera polsos de rellotge per a que el dispositiu esclau pugui enviar les dades. Desprès de cada byte rebut el dispositiu mestre genera un pols de reconeixement.

El dispositiu mestre pot deixar lliure el bus generant una condició de parada (Stop). Si es desitja seguir transmetent, el dispositiu mestre pot generar una altra condició d’inici en lloc d’una condició de parada. Aquesta nova condició d’inici es denomina inici repetit i s’utilitza per a adreçar un dispositiu esclau diferent o per alterar l’estat del bit de lectura/escriptura.

A continuació es posen dos exemples de seqüències d’enviament i recepció mitjançant el bus I2C.

Escriptura en un Dispositiu Esclau

1. Enviar una seqüència d’inici. 2. Enviar la direcció del dispositiu amb el bit de lectura/escriptura amb ordre

d’escriptura. 3. Enviar el nombre de registre intern en el que es desitja escriure. 4. Enviar byte de dades. 5. Opcionalment, enviar més bytes de dades. 6. Enviar la seqüència de parada.

Lectura d’un Dispositiu Esclau

1. Enviar una seqüència d’inici. 2. Enviar la direcció del dispositiu amb el bit de lectura/escriptura amb ordre de

lectura. 3. Enviar el número de registre intern que es desitja llegir. 4. Lectura de les dades. 5. Enviar la seqüència de parada.

Page 26: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

1.Memòria Descriptiva

Pàgina - 25 - de 137

1.8.3 Comunicació per Port Sèrie RS-232 amb Windows.

Ja s’ha dit que la interfície del PC es crearà amb el compilador C++ Builder 5.0. Aquest tipus de programació no accedeix a baix nivell directament. Per això, s’utilitzaran funcions del sistema operatiu Windows per tal de gestionar el port de comunicació.

Accés als Ports.

Les aplicacions de Windows es comuniquen amb els dispositius a través de les funcions API. Aquestes funcions accedeixen als ports mitjançant el controlador, que és una etapa intermèdia entre software i hardware del sistema operatiu. El controlador del port sèrie per defecte és el comm.drv.

Per a treballar amb el port sèrie utilitzant aquestes funcions, s’han de seguir aquestes quatre fases:

1. Operació d’obertura: S’obté un handler y es comprova si el sistema operatiu pot obtenir el port.

2. Configuració: S’estableixen els paràmetres de comunicació. 3. Accés al port: S’accedeix al port per a poder llegir-hi o escriure-hi. 4. Tancament del port: Per a que altres aplicacions puguin fer ús del port.

Gestió d’Errors.

Totes les funcions API utilitzades tenen com argument de sortida un paràmetre tipus BOOL que indica si la funció s’ha executat correctament o no.

Page 27: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Plataforma Demostradora d’Automòbil Basada en Microcontrolador

Pàgina - 26 - de 137

2. Memòria de Càlcul.

Page 28: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 27 - de 137

2.1 El Microcontrolador PIC24FJ64GA002.

2.1.1 Característiques del Nucli.

2.1.1.1 Arquitectura de 16 bits.

El nucli de la CPU del PIC24FJ64GA002 presenta les següents característiques:

• Bus de dades de 16 bits i bus d’adreces de 24 bits. • Adreçament lineal de fins a 12 Mbytes (memòria de programa) i 64 kBytes

(memòria de dades). • Banc de registres de treball de 16 registres. • Multiplicador hardware de 17x17. • Suport hardware per a divisions de 32/16. • Set d’instruccions que suporten modes d’adreçament múltiples i està optimitzat per

a llenguatges d’alt nivell com el C. • Funcionament operacional fins a 16 MIPS.

2.1.1.2 Tecnologia de Baix Consum.

El PIC24FJ64GA002 incorpora característiques que poden reduir el consum de potencia mentre està operant. Els elements principals són:

Commutació de rellotge en temps d’execució: el rellotge pot ser canviat via software, mitjançant la font de rellotge Timer1 o l’oscil· lador RC intern de baix consum, durant l’execució. Això permet a l’usuari incorporar mesures per reduir els consums en el disseny del seu software.

Operació en mode Doze: En aplicacions temporitzades, tals com comunicació via sèrie, el rellotge del sistema pot reduir la seva velocitat de forma selectiva, augmentant l’estalvi d’energia evitant la pèrdua d’informació.

Modes de baix consum per instrucció: El microcontrolador pot suspendre totes les operacions o desactivar el seu nucli deixant actius els perifèrics amb una única instrucció de software.

2.1.1.3 Opcions i Característiques de l’Oscil·lador.

El microcontrolador ofereix cinc opcions diferents per a l’oscil· lador, permetent escollir als usuaris entre diverses opcions per a les seves aplicacions hardware. Són les següents:

• Dos modes de cristall, utilitzant cristalls o ressonadors ceràmics. • Dos modes de clock extern, que ofereixen l’opció de dividir per dos la sortida de

rellotge. • Un oscil·lador intern (Fast Internal Oscillator (FRC)) amb una sortida de

freqüència nominal de 8 MHz, que també pot ésser dividida per control software fins a freqüències de fins a 31 kHz.

Page 29: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 28 - de 137

• Un multiplicador de freqüència (Phase lock Loop(PLL)), disponible per als modes d’oscil· lador extern i per a l’oscil· lador intern, que permet obtenir freqüències de fins a 32 MHz.

• Un oscil·lador RC intern (LPRC) amb una sortida fixa de 31 kHz, que disposa d’una opció de baix consum per a aplicacions no sensibles a la temporització.

2.1.1.4 Altres Característiques Especials.

• Comunicacions: El PIC24FJ64GA002 incorpora diversos perifèrics de comunicació sèrie. Disposa de dos mòduls que poden treballar com a màster i esclau. També disposa, gracies a la multiplexació de pins, de dos mòduls UART amb funció IrDA encoder/decoder i dos mòduls SPI.

• Peripheral pin select: aquesta opció permet que l’usuari pugui mapejar independentment les entrades i/o sortides de qualsevol dels perifèrics digitals a qualsevol dels ports d’Entrada/Sortida.

• Port Paral·lel/Port paral·lel esclau: Els ports d’Entrada/Sortida poden ser reconfigurats per a comunicacions de dades en paral·lel. En aquest mode, el port pot ser configurat tant per a operar com a màster com per operar com a esclau, suportant transferències de dades de 8-bit i 16-bit amb fins a 16 línies d’adreces externes en mode màster.

• Real-Time Clock/Calendari: Aquest mòdul implementa la funció de rellotge i calendari amb funcions d’alarma hardware, alliberant els timers i l’espai de memòria de programa per a ús de l’aplicació del nucli.

• Conversor A/D de 10 bits: Aquest mòdul incorpora temps d’adquisició programables, permetent la selecció de canal i l’inici de conversió sense esperar el període de mostreig, així com velocitats de mostreig més altes.

A la figura 2-1 es pot veure el diagrama de blocs general del dispositiu.

Page 30: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 29 - de 137

Figura 2-1. Diagrama de blocs PIC24FJ64GA002.

Page 31: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 30 - de 137

2.1.2 CPU.

La CPU dels PIC24FJ64GA002 té una arquitectura Harvard modificada de 16 bits (de dades) amb un conjunt d’instruccions millorat i una paraula d’instrucció de 24 bits amb un codi d’operació d’amplada variable. El comptador de programa (PC) es de 23 bits i pot adreçar fins a 4M d’instruccions de l’espai de memòria de programa. Totes les instruccions són executades en un sol cicle, excepte les instruccions que canvien el flux de programa i la instrucció MOVE.D (double).

Els dispositius PIC24FJ64GA002 tenen 16 registres interns de 16 bit. Cadascun d’aquests registres pot actuar com a registre de dades, d’adreces o d’offset d’adreces. L’últim registre (W15) funciona com a punter de la pila per a interrupcions i crides a funcions.

El conjunt d’instruccions ha estat millorat significativament en comparació amb el PIC18, tot i això manté un nivell acceptable de compatibilitat fins al punt de ser intercanviables en algunes aplicacions. Els PIC24FJ64GA002 suporten totes les instruccions i modes d’adreçament del PIC18, tant directament com a través de macros simples. Moltes de les modificacions del set d’instruccions han estat degudes a les necessitats d’eficàcia del compilador.

El nucli pot executar per cada cicle d’instrucció: una lectura a la memòria de dades, una lectura d’un registre intern, una escriptura a la memòria de dades o una lectura a la memòria de programa (instruccions). Per tant, admet la realització d’una operació de tres operands (del tipus A+B=C) en un cicle.

Inclou un multiplicador de 17x17 bits que millora significativament la capacitat aritmètica del nucli i el seu rendiment. El multiplicador pot executar en un sol cicle multiplicacions de nombres enters amb signe, sense signe o mixtes de 16x16 bits o de 8x8 bits.

La ALU de 16 bits ha estat millorada amb un hardware capaç de suportar algoritmes amb divisions iteratives. La ALU pot realitzar divisions de nombres enters (amb signe o sense signe) de 32 bits (o 16 bits) entre 16 bits. Les divisions requereixen 19 cicles per a ser completades, tot i que es poden interrompre al final de qualsevol cicle.

Els PIC24FJ64GA002 tenen un esquema d’excepcions vectoritzat de fins a 8 excepcions internes (traps) no emmascarables i fins a 118 fonts d’interrupció. Cada font d’interrupció pot ser assignada a un dels set nivells de prioritat.

A la figura 2-2 es mostra un diagrama de blocs de la CPU del PIC en qüestió.

Page 32: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 31 - de 137

Figura 2-2. Diagrama de blocs del nucli de la CPU.

2.1.2.1 Registres de Control de la CPU.

SR: Registre d’estat de la CPU.

U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W*-0 — — — — — — — DC

bit 15 bit 8

R/W*- 0 R/W*- 0 R/W*- 0 R-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 IPL2 IPL1 IPL0 RA N OV Z C

bit 7 bit 0

Page 33: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 32 - de 137

El bit DC és el senyalador de carry en el quart bit, els bits IPL2:IPL0 determinen els nivells de prioritat de les interrupcions de la CPU. Els bits N,OV, Z i C son senyaladors de la ALU (resultat negatiu, overflow, zero, carry en el vuitè bit), i el bit RA és el bit d’estat del bucle actiu REPEAT.

CORCON: Registre de control

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 R/C-0 R/W*-0 U-0 U-0 — — — — IPL3 PSV — —

bit 7 bit 0

El bit IPL3 indica si la prioritat d’interrupció de la CPU és més gran que 7 o no. PSV es un bit activador de la visualització de l’espai de programa en el de dades.

2.1.3 Organització de la Memòria.

Donada l’arquitectura Harvard del PIC24FJ64GA002, aquest té separada la memòria de programa i la memòria de dades. Aquesta arquitectura també permet l’accés directe a la memòria del programa des de l’espai de dades durant l’execució del codi.

2.1.3.1 Memòria de Programa.

A les figures 2-3 i 2-4 es mostren respectivament dos representacions gràfiques, una de l’organització de la memòria de programa i l’altra de la distribució de l’espai d’adreces de memòria de programa.

Figura 2-3. Organització de la memòria de programa.

Page 34: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 33 - de 137

Figura 2-4. Mapa de l’espai de memòria de programa.

La memòria de programa es divideix en dues parts:

Espai de memòria d’usuari: Conté el Vector de Reset, la Taula de Vectors d’Interrupció juntament amb la seva taula alternativa, la pròpia memòria de tipus FLASH y, una zona de memòria EEPROM de dades.

Espai de memòria de configuració: Zona que suporta l’espai de Configuració en el que s’ubiquen els bits de configuració no volàtils que determinen el comportament dels diversos recursos i les posicions ID del dispositiu.

2.1.3.2 Memòria de Dades.

És una memòria de tipus SRAM que consta de posicions de memòria de 16 bits en les que s’agrupen dos bytes. Les posicions inicials de la RAM estan destinades a contenir els Registres Específics (SFR) entre els que s’inclouen els d’estat, de control i els que regulen el comportament de tots els recursos. Aquest espai de la memòria de dades es

Page 35: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 34 - de 137

distribueix tal com mostra la figura 2-5. A la figura 2-6 es pot observar el mapa de l’espai de memòria de dades.

Figura 2-5. Espai de dades SFR

Figura 2-6. Mapa de l’espai de memòria de dades.

Page 36: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 35 - de 137

2.1.4 Mòduls Perifèrics Utilitzats.

2.1.4.1 El Controlador d’Interrupcions.

Tractament d’Interrupcions.

El controlador d’interrupcions dels PIC24F té les següents característiques:

• Processa fins a 8 excepcions i traps.

• 7 nivells de prioritat seleccionables. • Taula de vectors d’interrupció de fins a 118 vectors.

• Un únic vector per cada font d’interrupció o excepció. • Prioritat fixada per l’usuari. • Taula de vectors alternativa per ajudar la depuració.

Instruccions per a Inhibir Interrupcions.

Es possible inhibir interrupcions mitjançant la instrucció DISI.

La instrucció DISI només desactiva interrupcions que estiguin als nivells 1-6. Les interrupcions de nivell 7 i les excepcions es podran atendre tot i estant activa la instrucció DISI.

Aquesta instrucció treballa juntament amb un registre anomenat DISICNT. Quan aquest no val 0 les instruccions dels nivells 1-6 s’inhibeixen. Llavors el registre DISICNT comença una compta enrere fins arribar a 0 i habilita les interrupcions anteriors. El número de cicles en què les interrupcions estan inhibides es poden modificar escrivint en el registre un nou valor.

Funcionament d’una Interrupció.

Les instruccions s’atenen a cada cicle d’instrucció. Quan hi ha una petició d’interrupció, IRQ, pendent es senyalitza posant el bit del flag a 1 al registre IFS. Aquesta petició és atesa si el bit IECx del registre de permís corresponent està a 1.

Quan s’atén la petició d’interrupció ninguna instrucció avortarà, sinó que la que estava en procés quan s’ha atès la interrupció serà completada quan la interrupció acabi.

Quan s’atenen les interrupcions s’avaluen els nivells de prioritat. Si hi ha una IRQ pendent amb un nivell de prioritat major que el procés actual, la interrupció es detindrà. Llavors el processador deurà salvar la següent informació, que permetrà al processador el retorn a la instrucció en curs:

• El valor del comptador de programa, PC. • El byte baix del registre d’estat (SRL). • El bit d’estat IPL3.

La rutina d’atenció a la interrupció s’acabarà amb la instrucció RETFIE.

Interrupcions Anidades.

Les interrupcions són anidables. Qualsevol ISR (rutina d’atenció a la interrupció) que estigui en procés pot ser interrompuda per una altra font d’interrupció amb major nivell de prioritat.

Page 37: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 36 - de 137

L’anidament de les interrupcions s’habilita i s’inhabilita amb el bit NSTDIS del registre de control d’interrupcions INTCON1.

2.1.4.1.1 Registres de control d’interrupcions. Els registres que controlen les interrupcions i el seu estat es divideixen en sis grups:

1. Registres INTCON1 i INTCON2 que controlen les funcions globals de les interrupcions.

a) INTCON1 : Conté els flags i bits de controls de les excepcions i el bit NSTDIS que habilita/inhabilita l’anidament d’interrupcions.

INTCON1: Registre de control d’interrupcions 1.

R/W*-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 NSTDIS — — — — — — — bit 15 bit 8

U-0 U-0 U-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 U-0 — — — MATHERR ADDRERR TSKERR OSCFAIL —

bit 7 bit 0

b) INTCON2: Conté els bits per al control de les interrupcions externes i el bit que activa la AIVT.

INTCON2 : Registre de control d’interrupcions 2.

R/W*-0 R-0 U-0 U-0 U-0 U-0 U-0 U-0 ALTIVT DISI — — — — — — bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 R/W*-0 R/W*-0 R/W*-0 — — — — — INT2EP INT1EP INT0EP

bit 7 bit 0

2. Registre SR: S’explica al punt 2.1.2.1. 3. Registre CORCON: S’explica al punt 2.1.2.1. 4. IFSx: Registres d’estat del flag d’interrupció. Contenen tots els senyaladors de

petició d’interrupcions. Cada font d’interrupció tindrà un bit d’estat, que s’activarà des de la font d’interrupció i es desactivarà per mitjà de software. La x denota el número del registre, podent diferenciar 3 registres: IFS0, IFS1 i IFS2.

5. IECx: Registres de control de permís d’interrupcions. Contenen els bits d’habilitació de les interrupcions. La x denota el número de registre, podent ser: IEC0, IEC1, IEC2.

6. IPCx: Registres de control de prioritat d’interrupcions. S’utilitzen per a emmagatzemar el nivell de prioritat de cada font d’interrupció.

Page 38: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 37 - de 137

2.1.4.2 Ports d’Entrada/Sortida.

Els ports d’entrada/sortida (E/S) són els conjunts de pins que suporten les senyals que entren i surten del dispositiu. La majoria de pins d’E/S suporten diverses funcions alternatives multiplexades en el temps. A la figura 2-7 es mostra el diagrama de blocs d’un pin d’un port d’E/S típic. No s’han tingut en compte les possibles funcions destinades als perifèrics.

Figura 2-7. Diagrama de blocs de l’estructura d’un pin d’E/S.

2.1.4.2.1 Registres de Control del Ports. Tots els ports E/S tenen 3 registres directament associats amb l’operació del port, on

<<x>> es la lletra que fa referència al port particular d’E/S.

• TRISx: Registre de la direcció de les dades que determina si les línies són d’entrada o de sortida.

• PORTx: Registre del port d’E/S que conté el valor de les línies d’entrada. • LATx : Registre latch d’E/S que emmagatzema el valor que tenen les línies de

sortida.

Cada pin d’E/S del dispositiu disposa d’un bit directament associat a cadascun dels registres TRIS, PORT i LAT.

Registres TRIS.

Els bits del registre de control TRISx són els que determinen si cada pin associat de línia d’E/S corresponent està configurat com a entrada o sortida. Si el bit TRIS associat a

Page 39: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 38 - de 137

cada pin d’E/S val 1 aquest estarà configurat com a entrada. En cas contrari, si val 0, estarà configurat com a sortida.

Registres PORT.

Les dades existents al pin d’E/S són accedides a través del registre PORTx. Mitjançant una lectura del registre PORTx es llegeix el valor que suporten o reben els pins d’E/S, mentre una escriptura en aquest port escriu el valor en el registre latch corresponent.

Escriure en un port implica que els seus pins siguin llegits, es modifiqui el seu valor i després s’escrigui el latch de dades. S’ha d’anar amb compte quan s’utilitzen instruccions de lectura i escriptura en els registres PORTx, especialment quan alguns pins d’E/S associats a aquest es configuren com entrades. Si un pin d’E/S configurat com entrada, transcorregut un temps es canvia a sortida, pot produir un valor de sortida inesperat. Aquest efecte ocorre perquè una instrucció de lectura o escriptura llegeix el valor instantani del pin d’entrada i el carrega al latch de dades.

Registres LAT.

El registre LATx associat a un pin d’E/S elimina els problemes que poden ocórrer amb les instruccions de lectura, modificació i escriptura. Una lectura del registre LATx retorna els valors guardats al registre latch de sortida del port, en lloc dels valors dels pins d’E/S. Una operació de lectura-modificació-escriptura al registre LAT associada amb un port d’E/S, evita la possibilitat d’escriure els valors del pin d’entrada als latch del port. Una escriptura al registre LATx té el mateix efecte que una lectura del registre PORTx.

Les diferències entre els registres PORT i LAT son les següents:

• Una escriptura al registre PORTx escriu el valor de les dades al registre latch del port.

• Una escriptura al registre LATx escriu el valor de les dades al registre latch del port.

• Una lectura del registre PORTx llegeix el valor de les dades dels pins d’E/S.

• Una lectura del registre LATx llegeix el valor de les dades guardades al registre latch del port.

El PIC24FJ64GA002 té dos ports d’E/S, port A i port B. Els registres associats són: TRISA, PORTA i LATA per al port A i TRISB, PORTB i LATB per al port B. Val a dir que, degut als pocs pins que té aquest model el port A només té disponibles 9 pins.

Els pins associats a ports d’entrada sortida utilitzen la nomenclatura Rxn, on n és l’ordre dins de cada port.

Selecció de Pins de Perifèrics.

Quan s’habilita un perifèric tots els pins que té associats per suportar les seves senyals es desactiven com a pins d’E/S generals. Per això, els pins d’E/S són multiplexables i poden suportar diverses funcions. La figura 2-7 (de l’apartat anterior) mostra com es multiplexen les línies d’E/S per donar servei als perifèrics.

La selecció de pins de perifèrics es pot donar en 15 pins diferents (RPn) mitjançant els registres designats amb la nomenclatura RPINRx i RPORn. Aquests pins tant es poden configurar com a entrades de perifèrics com a sortides. La configuració es realitza amb

Page 40: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 39 - de 137

registres de l’espai de memòria SFR (explicat al punt 2.1.3.2) . Aquests registres es divideixen entre entrades de perifèrics i sortides. A la figura 2-8 es poden veure les entrades de perifèrics disponibles i el registre de configuració RPINRx corresponent. A la figura 2-9 apareixen les sortides de perifèrics disponibles, amb el número de funció que els correspon i que s’haurà d’incloure als registres RPORn per tal de configurar una pota com a sortida d’algun perifèric.

Figura 2-8. Entrades de perifèrics seleccionables.

Figura 2-9. Sortides de perifèrics seleccionables.

Page 41: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 40 - de 137

2.1.4.3 Timers.

El PIC24FJ64GA002 disposa d’un màxim de 5 timers. El Timer1 és de 16 bits i es pot fer servir com a comptador del Real Time Clock (RTC) o operar independentment com a temporitzador/comptador. Pot operar en tres modes diferents:

• Timer de 16 bits. • Comptador de 16 bits síncron. • Comptador de 16 bits asíncron.

A la figura 2-10 es pot apreciar un diagrama de blocs on es pot veure un multiplexor que s’encarrega d’escollir el mode de funcionament. Un altre multiplexor controla la sincronització amb l’exterior, sempre que una font de rellotge externa hagi estat seleccionada. A més, posseeix un escalat de freqüència que es selecciona mitjançant 2 bits i que es pot configurar sempre que TON estigui activat. Finalment, disposa d’un comparador que s’utilitza per generar interrupcions.

El timer2/3 i el timer4/5 poden operar en diferents modes:

• Dos timers independents de 16 bits (timer2 i timer 3). • Un timer de 32 bits. • Un comptador síncron de 32 bits.

Els timers 4/5 tenen la capacitat de disparar (trigger) en una conversió A/D.

A la figura 2-11 es mostra un diagrama de blocs dels Timer2/3 i Timer 4/5.

Figura 2-10. Diagrama de blocs del Timer1.

Page 42: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 41 - de 137

Figura 2-11. Diagrama de blocs del Timer2/3 i Timer4/5.

2.1.4.3.1 Registres de Control. En aquest projecte s’han utilitzat els timers 1 i 3. Per tant, només s’explicaran els

seus registres associats.

T1CON: Registre de control del Timer1.

R/W*-0 R-0 R/W*-0 U-0 U-0 U-0 U-0 U-0 TON — TSIDL — — — — —

bit 15 bit 8

U-0 R/W*-0 R/W*-0 R/W*-0 U-0 R/W*-0 R/W*-0 U-0 — TGATE TCKPS1 TCKPS0 — TSYNC TCS —

bit 7 bit 0

El bit TON activa o desactiva el timer. TSIDL indica si el timer s’ha d’aturar o no en mode IDLE. TCKPS1:TCKPS0 són els bits d’elecció del prescaler. Aquest pot tenir els següents rangs: 1:256, 1:64, 1:8, 1:1. TSYNC habilita la sincronització amb el senyal extern de rellotge. Per últim, TCS selecciona la font de rellotge entre el rellotge intern (Fosc/4) i el rellotge extern aplicat a la pota TxCK (configurant una entrada RPn).

T3CON: Registre de control del Timer3.

R/W*-0 R-0 R/W*-0 U-0 U-0 U-0 U-0 U-0 TON — TSIDL — — — — —

bit 15 bit 8

Page 43: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 42 - de 137

U-0 R/W*-0 R/W*-0 R/W*-0 U-0 R/W*-0 R/W*-0 U-0 — TGATE TCKPS1 TCKPS0 — — TCS —

bit 7 bit 0

El registre de control del Timer3 és igual que el del Timer1, amb la diferència que aquest no te l’opció de sincronitzar-se amb un senyal extern de rellotge (no té el bit TSYNC).

Tant el Timer1 com el Timer3 tenen dos registres associats PRx i TMRx . El primer és el registre de períodes associat al timer i el segon és el registre comptador del timer. Per altra banda, cada temporitzador té associats una sèrie de bits per al control d’interrupcions: TxIE (habilitació/deshabilitació), TxIF (senyalitzador de desbordament) i TxIP2:TxIP0 (prioritat d’interrupció).

2.1.4.4 Mòdul de Comparació.

A la figura 2-10 del punt 2.1.6 es pot veure que el PIC24FJ64GA002 disposa de fins a 5 possibles funcions de comparació configurables (OCx). Si es configura un del pins RPn com a OCx es podrà generar, per aquest pin, una sortida de tipus PWM. Per fer-ho, es seguiran aquests passos:

1. Seleccionar el període del PWM al registre PR del Timer escollit. 2. Seleccionar el duty cicle escribint al registre OCxRS. 3. Escriure al registre OCxR el duty cycle inicial. 4. Habilitar les interrupcions del timer, si es requereixen. 5. Configurar el mode d’operació PWM als bits OCM2:OCM0 del registre

OCxCON, i el timer associat al bit OCTSEL del mateix registre. 6. Escollir el valor de preescala de TMRy .

Per a calcular el període del PWM s’utilitza la següent expressió:

= + 1 · · : "# = 1

= × 2

1

Per saber la resolució màxima del duty cycle que es pot utilitzar s’operarà amb la següent expressió.

&. ( )( = *+, - "

". · /0*+,2 )(

(2)

A la figura 2-12 es mostra un diagrama de blocs del mòdul de comparació.

Page 44: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 43 - de 137

Figura 2-12. Diagrama de blocs del mòdul de comparació.

2.1.4.5 UART (Universal Asynchronous Receiver/Transmitter).

Les principals característiques d’aquest mòdul són:

• Funcionament en mode full-duplex amb dades de 8 o 9 bits. • Possibilitat de treballar amb paritat parell, senar o sense paritat. • Un o dos bits d’STOP. • Conté un generador de bauds amb un prescaler de 16 bits que s’encarrega de

generar la freqüència de treball de mòdul. • Buffer de transmissió amb capacitat per a 4 caràcters. • Buffer de recepció amb capacitat per a 4 caràcters. • Possibilitat d’emprar interrupcions per a indicar la finalització de la

transmissió o de la recepció. • Pins específics Tx i Rx per a transmetre i rebre.

Les transferències d’informació es realitzen sobre dues línies, UTX (transmissió) i URX (recepció), sortint i entrant els bits per aquestes línies al ritme d’una freqüència controlada intermitent per la UART.

Cada paraula o dada d’informació s’envia independentment dels altres. Sol constar de 8 o 9 bits i van precedits per un bit d’START i darrere d’aquests es col·loca un bit d’STOP, d’acord a les normes del format estàndard NRZ. Els bits son transmesos a una freqüència fixa i normalitzada.

El mòdul UART està format per aquestos tres grans blocs que es mostren a la figura 2-13.

1. Generador de bauds. 2. Transmissor asíncron. 3. Receptor asíncron.

Page 45: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 44 - de 137

Figura 2-13. Diagrama de blocs del mòdul UART.

Les entrades i sortides d’aquest mòdul han de ser assignades a un dels pins RPn lliures, com s’explica al punt 2.1.4.2.1.

2.1.4.5.1 Registres de Control. Per a iniciar el funcionament en el mode UART és necessari establir les condicions

de treball programant adequadament alguns bits dels registres de la UART que es descriuen a continuació.

UxMODE: Registre de mode UARTx.

R/W*-0 U-0 R/W*-0 R/W*-0 R/W*-0 U-0 R/W*-0 R-1 UARTEN — USIDL IREN RTSMD — UEN1 UEN0 bit 15 bit 8

R/C-0 R/W*-0 R/W*-0 R-0 R-0 R/C-0 R/W*-0 R-0 WAKE LPBACK ABAUD RXINV BRGH PDSEL1 PDSEL0 STSEL

bit 7 bit 0

Per habilitar un dels mòduls UART s’utilitza el bit UARTEN . USIDL indica si la UART es desactiva o no en mode idle. El bit IREN activa o desactiva l’encóder/decóder IrDA. RTSMD selecciona el mode del pin UxRTS* entre Simplex i Flow Control. Els bits UEN1:UEN0 habiliten els diferents pins de control de la UART. ABAUD activa l’Auto-Baud. RXINV inverteix la polaritat del bit de recepció. El bit BRGH s’utilitza per activar el mode d’altra velocitat. PDSEL1:PDSEL0 seleccionen la paritat i el tipus de dades (8 o 9 bits) i, per últim, STSEL selecciona els bits d’STOP (1 o 2).

UxSTA: Registre d’estat de la UART.

R/W*-0 R/W*-0 R/W*-0 U-0 R/W*-0 R/W*-0 R-0 R-1 UTXISEL1 UTXINV UTXISEL0 — UTXBRK UTXEN UTXBF TRMT bit 15 bit 8

Page 46: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 45 - de 137

R/W*-0 R/W*-0 R-1 R-0 R-0 R/C-0 R/W*-0 R-0 URXISEL1 URXISEL0 ADDEN RIDLE PERR FERR OERR URXDA bit 7 bit 0

Els bits UTXISEL1:UTXISEL0 seleccionen el mode d’interrupció de la transmissió. L’UTXBRK indica el mode de treball del mòdul UART, ja sigui mode normal o per nivell baix. El bit UTXEN permet o prohibeix l’operació de transmissió. L’ UTXBF és un bit de lectura que indica si el buffer de transmissió està ple o no. El bit TMRT és el bit d’estat del registre de desplaçament de transmissió. Els bits URXSEL1:URXSEL0 seleccionen el mode d’interrupció de la recepció. ADDEN s’activa quan es detecta una direcció. RIDLE indica si la recepció està en procés o no i el bit d’estat URXDA indica la disponibilitat o no d’una dada al buffer de recepció. OERR, PERR i FERR són bits d’error de desbordament, de paritat i de trama respectivament.

UxTXREG: Registres de transmissió UARTx.

U-x U-x U-x U-x U-x U-x U-x W-x — — — — — — — UTX8

bit 15 bit 8

W-x W-x W-x W-x W-x W-x W-x W-x UTX7 UTX6 UTX5 UTX4 UTX3 UTX2 UTX1 UTX0

bit 7 bit 0

URX8 s’utilitza en el mode de transmissió de 9 bits. UTX7:UTX0 són els bits del 0 al 7 del caràcter transmès.

UxRXREG: Registre de recepció UARTx.

U-x U-x U-x U-x U-x U-x U-x W-x — — — — — — — UTX8

bit 15 bit 8

W-x W-x W-x W-x W-x W-x W-x W-x UTX7 UTX6 UTX5 UTX4 UTX3 UTX2 UTX1 UTX0

bit 7 bit 0

2.1.4.5.2 Generador de Bauds. Per a generar la freqüència de transmissió en mode asíncron, la UART disposa d’un

generador de freqüència en bauds, el valor del qual és controlat pel registre UxBRG. L’expressió següent ens permet saber quin valor ha de tenir el registre UxBRG per a obtenir la freqüència desitjada en bauds:

1 ( = "16 · 3&14 + 1

3&14 = "16 · 1 ( − 1

3

Page 47: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 46 - de 137

Essent Fcy la freqüència de cicle d’instrucció (Fosc/2).

2.1.4.6 I2C (Inter-Integrated Circuit).

El mòdul té les següents característiques:

• Lògica independent per a màster i esclau. • Mode esclau I2C amb direccions de 7 o 10 bits. • Mode màster I2C amb direccions de 7 o 10 bits. • Freqüència d’SCL de 100 o 400 kHz. • Màscara d’adreça configurable. • Mode multi-màster. Pot detectar col·lisions de bus i controlar l’arbitratge

d’aquest. • SCL automàtic.

La figura 2.14 mostra el diagrama de blocs del mòdul I2C del microcontrolador.

Figura 2-14. Diagrama de blocs del mòdul I2C.

Page 48: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 47 - de 137

Per al control de la comunicació I2C s’utilitzen els següents registres de 16 bits:

I2CxCON i I2CxSTAT són els registres de control i d’estat respectivament. El registre I2CxCON és de lectura/escriptura. Els 6 bits de menys pes del registre I2CxSTAT són només de lectura. La resta son de lectura/escriptura.

El registre I2CxRCV és el registre de recepció. I2CxTRN és el registre del buffer de sortida en el qual s’escriuen els bytes durant la operació de transmissió.

El registre I2CxADD conté la direcció de l’esclau. I2CxBRG és el valor de recàrrega del generador de bauds.

2.1.4.6.1 Mode Màster. Quan s’utilitza el mòdul I2C funcionant com a màster, aquest pot realitzar 6

operacions:

• Donar una condició d’inici o Start a SDA i SCL. • Donar una condició de RESTART a SDA i SCL. • Escriure una dada al registre I2CxTRN que inicia la transmissió de

dades/adreça. • Donar una condició d’aturada o Stop a SDA i SCL. • Configurar el port I2C per a rebre dades. • Donar condició de reconeixement ACK al final del byte rebut.

Tota comunicació comença quan el màster envia l’ordre d’inici. Es reconeix perquè la línea SCL està a 1 i a la línea SDA hi ha un flanc descendent. El final d’una transferència es produeix quan el màster genera una condició de parada.

El màster s’ocupa en tota la comunicació de generar els polsos de rellotge i les condicions d’inici i parada.

2.1.4.6.1 Transmissió en Mode Màster. L’enviament ja sigui d’un byte de dades, d’una adreça, o de la segona meitat d’una

adreça de 10 bits, es du a terme al registre I2CxTRN. Aquesta acció activarà el flag TBF (Buffer de transmissió complet) i permetrà el començament de la següent transmissió. El flag de l’estat de transmissió, TRSTAT (I2CxSTAT), indica que el màster està enviant dades.

2.1.4.6.2 Registres de Control.

I2CxCON: Registre de control I2Cx.

R/W*-0 U-0 R/W*-0 R/W*-1 R/W*-0 R/W*-0 R/W*-0 R/W*-0 I2CEN — I2CSIDL SCLREL IPMIEN A10M DISSLW SMEN

bit 15 bit 8

R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 GCEN STREN ACKDT ACKEN RCEN PEN RSEN SEN

bit 7 bit 0

Page 49: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 48 - de 137

El bit I2CEN habilita o deshabilita el mòdul I2Cx. I2CSIDL indica si el mòdul continua o no funcionant en mode Idle. IPMIEN habilita o deshabilita el mode de funcionament intel·ligent. A10M indica si les direccions del registre I2CxADD són de 7 o 10 bits. El bit ACKDT configura quin bit de reconeixement s’enviarà en la seqüència de reconeixement durant la recepció en mode màster. ACKEN inicia la seqüència de reconeixement a SDA i SCL i transmet el bit ACKDT. RCEN habilita la recepció en mode màster. Els bit PEN, RSEN i SEN són els bits que donen les condicions d’Stop, de RESTART i d’Start respectivament.

I2CxSTAT: Registre d’estat I2Cx.

R-0 HSC R-0 HSC U-0 U-0 U-0 RC-0 HS R-0 HSC R-0 HSC ACKSTAT TRSTAT — — — BCL GCSTAT ADD10 bit 15 bit 8

RC-0 HS RC-0 HS R-0 HSC RC-0 HS RC-0 HS R-0 HSC R-0 HSC R-0 HSC IWCOL I2COV D/A* P S R/W* RBF TBF

bit 7 bit 0

El bit ACKSTAT marca si l’últim que s’ha detectat és un ACK o un NACK. TRSTAT indica si una transmissió està en procés o no. BCL es posa a 1 si es detecta una col·lisió de bus en una operació com a màster. ADD10 indica si s’han emparellat dos bytes d’una adreça de 10 bits. IWCOL es posa a 1 si hi ha una col·lisió en escriure al registre I2CxTRN si aquest està ocupat. El bit I2COV es posa a 1 si s’ha rebut un byte mentre el registre I2CxRCV estava encara amb el byte anterior. D/A* senyala si l’últim byte rebut era una dada o una adreça. P i S indiquen si s’ha detectat un bit de parada o d’inici respectivament. R/W* indica si es vol escriure a l’esclau o llegar de l’esclau en aquest mode. RBF i TBF si els busos de recepció i transmissió estan plens o no.

2.1.4.6.3 Generador de Bauds. Per a calcular quin valor s’ha de donar al registre I2CxBRG per tal d’aconseguir la

freqüència de SCL desitjada, s’utilitza l’expressió següent:

2&14 = 7 89:×8;<=

> − 1

(4)

2.1.4.7 Conversor A/D de 10 bits.

El conversor A/D de 10 bits del PIC24FJ64GA002 té les següents característiques:

• Resolució de 10 bits (1024 valors digitals). • Velocitat de conversió de fins a 500 ksps. • 9 canals disponibles: AN0-AN5 AN9-AN12. • Mode automàtic d’exploració de canal. • Font seleccionable del disparador de la conversió. • Buffer de conversió de 16 paraules. • Modes de selecció per a ompliment del buffer. • Quatre opcions d’alineament del resultat.

Page 50: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 49 - de 137

• Funciona mentre la CPU està en mode Sleep o idle.

A la figura 2-15 es mostra el diagrama de blocs del conversor A/D.

Figura 2-15. Diagrama de blocs del conversor A/D de 10 bits.

2.1.4.7.1 Registres de Control. El conversor A/D compta amb 3 registres de control (AD1CON1, AD1CON2 i

AD1CON3), un registre de selecció de Canals de conversió (AD1CHS0), un registre de configuració dels ports A/D (AD1PCFG) i un registre per a la selecció dels canals on es vol utilitzar l’opció Input Scan (AD1CSSL).

AD1CON1: Registre de control A/D 1.

R/W*-0 U-0 R/C-0 U-0 U-0 U-0 R/W*-0 R/W*-0 ADON — ADSIDL — — — FORM1 FORM0

bit 15 bit 8

R/W*-0 R/W*-0 R/W*-0 U-0 U-0 R/W*-0 R/W*-0 R/W*-0 SSRC2 SSRC1 SSRC0 — — ASAM SAMP DONE

bit 7 bit 0

Page 51: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 50 - de 137

El bit ADON indica si el mòdul AD està activat o desactivat. ADISL indica si el conversor segueix operant o no en mode Idle. FORM1:FORM0 seleccionen el format de sortida de la dada (fracciona’l amb signe, fracciona’l sense signe, enter amb signe, enter sense signe). SSRC2:SSRC0 indiquen quina Font de dispar de conversió s’utilitza. El bit ASAM habilita o deshabilita el mostreig automàtic. El bit SAMP habilita o deshabilita el mostreig. Per últim, el bit DONE es posa a 1 quan s’ha fet una conversió.

AD1CON2: Registre de control A/D 2.

R/W*-0 R/W*-0 R/W*-0 R/W*-0 U-0 R/W*-0 U-0 U-0 VCFG2 VCFG1 VCFG0 — — CSCNA — —

bit 15 bit 8

R-0 U-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 BUFS — SMPI3 SMPI2 SMPI1 SMPI0 BUFM ALTS

bit 7 bit 0

Els bits VCFG2:VCFG0 seleccionen la tensió de referència per al conversor. SMPI3:SMPI0 seleccionen el nombre de seqüències mostreig-conversió per interrupció. BUFM selecciona el mode del buffer, dos buffers de 8 paraules o un buffer de 16 paraules. El bit ALTS permet escollir entre utilitzar només el multiplexor d’entrada A o bé anar alternant entre A i B.

AD1CON3: Registre de control A/D 3.

R/W*-0 U-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 ADRC — — SAMC4 SAMC3 SAMC2 SAMC1 SAMC0

bit 15 bit 8

R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 R/W*-0 ADCS7 ADCS6 ADCS5 ADCS4 ADCS3 ADCS2 ADCS1 ADCS0

bit 7 bit 0

ADRC selecciona la font de rellotge de conversió A/D entre un clock derivat del clock del sistema o bé el clock RC intern de l’A/D. SAMC4:SAMC0 escullen el temps de mostreig en mode Automàtic. Els bits ADCS7:ADCS0 seleccionen el rellotge de conversió, entre Tcy/2 i 128·Tcy.

Page 52: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 51 - de 137

2.2 Diagrames de Flux i Càlculs de cada Mòdul.

Abans de realitzar els càlculs referents a la programació de cada mòdul de la plataforma s’ha de concretar quin dels oscil· ladors disponibles en el microcontrolador s’utilitzarà. En aquest cas, l’oscil· lador utilitzat és el Fast RC Oscillator amb Postscaler (FRCDIV). No es dividirà la freqüència de l’oscil· lador i, per tant, es tindrà una freqüència de 8 MHz, o el que és el mateix, una freqüència de cicle d’instrucció de 4 MHz.

2.2.1 Accelerador/Fre i Visualització de Velocitat.

La gestió d’aquest mòdul es realitza en tres blocs:

• Lectura dels valors de conversió A/D del fre i l’accelerador. • Generació de la rampa d’acceleració, frenada i desacceleració. • Generació del rellotge d’entrada del shift register per a la visualització de

velocitat.

Concretament, s’han emprat per a dur a terme la programació d’aquest mòdul els següents dispositius disponibles del microcontrolador: el conversor A/D, el Timer3 i el Timer1. El principi de funcionament general és el següent:

Mentre s’executa el programa principal es rebran interrupcions del conversor, d’on s’extraurà el valor de l’accelerador i el fre. Es calcularà a quina velocitat ha d’anar el vehicle. Periòdicament, es rebran interrupcions del Timer3, que s’encarregarà de modificar el període d’interrupció del Timer1 (generador de rellotge via port d’E/S), tot seguint una rampa de pujada o de baixada en funció de si s’ha d’accelerar o frenar.

En el diagrama de flux següent es pot veure com es gestiona el mòdul de velocitat de la plataforma. Tant en aquest diagrama com en diagrames posteriors s’hi poden veure marcadors que indiquen la correspondència amb la part del codi que descriuen i que es troba a l’annex 7.3 identificat amb la mateixa marca.

Page 53: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 52 - de 137

2.2.1.1 Diagrama de Flux.

2

3 4

5

1 6

7

8

Page 54: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 53 - de 137

2.2.1.2 Càlcul del Temps de Mostreig.

Per tal de sincronitzar tots els processos i de no tenir un excés de rutines de servei a la interrupció (només tenim 7 nivells de prioritat), s’ha decidit controlar alguns processos amb el mateix timer, en aquest cas el Timer3. Un d’aquests processos és el de donar l’ordre d’iniciar un nou mostreig al conversor A/D.

Com ja s’ha vist en el punt 2.1.4.7, el conversor es pot configurar per a que iniciï un nou mostreig cada cop que es desbordi el Timer3, seleccionant l’opció amb els bits SSRC2:SSRC0 de la paraula de control AD1CON1. Així doncs, s’haurà de calcular el valor del registre PR3 per a mostrejar amb una freqüència prou ràpida per detectar els canvis d’accelerador, fre i direcció i també per a realitzar la resta de processos controlats pel timer3.

L’expressió a partir de la qual s’obté el temps de conversió de cada bit és la següent:

?@ = ABCDE + 12

(5)

Per tant, si es sap quin temps de conversió es vol, es pot obtindre quin valor de compta de 8 bits (ADCS7:ADCS0 al registre ADC1CON3) s’haurà de carregar en les inicialitzacions per tal d’obtenir el temps de conversió desitjat.

CDE = 2 ?@AB

− 1

(6)

Com es veurà a continuació, el temps entre el mostreig de cada canal serà de 0,1 ms, la qual cosa implica que el temps total de conversió de la dada de 10 bits ha de ser inferior al període de mostreig. Per tant:

?@ = F,GH IJ+

= 1,25 µ 7

Tenint en compte que el temps obtingut és el corresponent a la conversió d’un bit, caldrà multiplicar-lo per 10 per obtenir el temps total d’una conversió sencera.

9hGijkHló = 10 · ?@ = 10 · 5µ = 12,5 µ 8

Un cop ja es té el temps de conversió total i se sap quin serà el temps de

mostreig, s’haurà d’obtenir el període de mostreig. Com ja s’ha dit, aquest temps vindrà donat pel període del timer3, per tant, s’haurà de calcular quin valor es carrega al registre PR3 en funció de la inicialització del timer.

Page 55: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 54 - de 137

Inicialització del Timer3:Inicialització del Timer3:Inicialització del Timer3:Inicialització del Timer3: Es seleccionarà com a font de rellotge el clock intern (Fosc/2) i amb un prescaler 1:1.

Per tant, si es vol un temps de mostreig de 0,1 ms, s’haurà de carregar al registre PR3 un valor de :

14yz × 3 = (*

3 = 0,1 × 4yz = 400 = 0&190

(9)

Amb l’eina Stopwatch de l’MPLAB IDE es comprova que, efectivament, el període del timer3 és gairebé 0,1ms exactes (0,10025 ms).

Tenint en compte que s’han de mostrejar 3 canals del conversor A/D (un per l’accelerador, un pel fre i un per la direcció), el temps de mostreig de cada un d’aquests canals és el triple del temps calculat, ja que a cada ordre de mostreig es selecciona un dels canals. Per tant, el temps de mostreig de cada canal serà d’uns 0,3 ms.

2.2.1.3 Càlcul de la Velocitat del Vehicle.

A cada mostreig del canal 0, on tenim connectat l’accelerador, es guarda la lectura del buffer de dades de conversió A/D en una variable. Donat que la lectura del conversor pot oscil· lar una mica, es pren com a marge de seguretat que els 2 primers valors (0 i 1) es prenguin com a velocitat 0. A partir d’aquí, si el valor de la conversió és superior a 1, s’opera de la següent manera.:

Es calcula l’increment del valor de conversió respecte el valor de conversió anterior:

( = / ( − / ( (10)

D’aquesta manera, es compara si aquest increment es positiu o negatiu. En el primer cas, un flag d’acceleració es posarà a 1. En el segon cas, el flag es posarà a 0 i s’activarà un flag de desacceleració, que en el cas anterior es posa a 0.

En qualsevol dels casos, es calcularà la velocitat del vehicle en magnitud de compta de temporitzador. Es fa així perquè el clock que es genera per a la visualització de la velocitat es controla amb el Timer1, de manera que calcularem quina compta se li ha de donar al registre PR del Timer1 per a que es vegi la velocitat desitjada.

((1 = ( à& − ( − 1 × |( : ( à& = ( à& |#ü ~ í .

(11)

El factor multiplicador s’afegeix ja que es vol variar entre una freqüència mínima i una freqüència màxima. Per tant, s’ha de fer la resta entre el valor màxim de la compta i el valor mínim i dividir el resultat entre el nombre de valors possibles del valor de conversió.

Page 56: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 55 - de 137

Com que el conversor és de 10-bits, s’obté que els valors possibles són 1024 (menys el de marge de seguretat que s’ha pres).

9h àl9h íGl+, = |(

(12)

En aquest cas, s’ha pres com a freqüència mínima 4 Hz, i com a freqüència màxima 20 Hz. Per tant, els valors màxim i mínim del registre PR1 seran:

1à& = 0,05 × 4yz64 = 3125 = 0&35

1í = 0,25 × 4yz

64 = 15625 = 0&3D09 13

Així doncs, el factor multiplicador serà aproximadament 12.

Tenint en compte l’error de decimals que es comet en arrodonir el factor, s’obté que la compta del timer mínima efectiva és de 0xD39, o el que és el mateix, la freqüència màxima és de 18,46 Hz.

Si s’està accelerant (flag d’acceleració a 1), s’aprofitarà la rutina de servei a la interrupció del Timer3 per a generar la rampa d’acceleració. Es fa de la següent manera:

Si el valor de la compta del Timer1 és major que la compta calculada a la rutina de servei del conversor, es segueix decrementant el valor de la compta. Quan els dos valors són iguals o la compta del timer és inferior a la compta calculada, el flag d’acceleració es posa a 0. Tal com s’havia dit a la memòria descriptiva, el cotxe mantindrà aquesta velocitat mentre no es freni, es deixi l’accelerador o es freni.

Si s’està desaccelerant (flag de desacceleració a 1), s’aprofitarà la rutina de servei a la interrupció del Timer3 per a generar la rampa de desacceleració, menys brusca que la de frenada.

Per fer el càlcul de la frenada, s’espera que succeeixi el mostreig del canal 1, on està connectat el potenciòmetre de fre. Com en el cas de l’acceleració, es guarda la lectura del buffer del conversor en una variable. També es pren el marge de seguretat esmentat anteriorment de 2 valors de conversor inicials com a 0. Es calcula l’increment del valor de conversió respecte el valor de la conversió anterior:

( = / | ( − / | ( (14)

Si l’increment és positiu, i més gran que 1 per prendre un marge de seguretat per possibles oscil· lacions del valor convertit, s’activa un flag de frenada i es desactiva el flag d’acceleració. En cas que el valor obtingut del mostreig sigui superior a un límit, el cotxe s’aturarà, és a dir, es carregarà un 0 al registre PR1, de manera que el rellotge de control dels leds de visualització no s’activi. Com en el cas de l’acceleració, es genera la rampa de frenada a la rutina de servei del Timer3, però en aquest cas s’incrementa el valor de la compta.

Page 57: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 56 - de 137

A la memòria descriptiva ja s’ha dit que per prémer el fre, s’obvia que l’accelerador no està pitjat. Per tant, quan es frena, el valor de la velocitat es decrementa seguint la rampa programada a la rutina de servei del Timer3 fins arribar a 0, suposant que no es deixa de pitjar el fre.

A la figura 2-16 es mostra una gràfica explicativa de com es comportarà el sistema segons la situació:

Figura 2-16. Diagrama de blocs del Timer2/3 i Timer4/5.

• Zona 1: Es parteix amb velocitat 0. Els valors de conversió de l’accelerador i el fre

són 0. Per tant, es mantindrà aquesta velocitat mentre no es premi l’accelerador. • Zona 2: S’ha variat la posició de l’accelerador. A la propera interrupció de

conversió dedicada a l’accelerador s’activarà el flag d’acceleració i es calcularà la nova consigna (valor a carregar al registre PR1). A partir d’aquí, si el sistema es manté en la mateixa situació, la velocitat s’anirà incrementant a cada interrupció del Timer3, seguint una rampa, fins a arribar a la consigna.

• Zona 3: La velocitat es manté estable fins que no s’acceleri més, es deixi anar l’accelerador o es freni. En el moment que es deixa de prémer una mica l’accelerador s’activa la desacceleració i el vehicle va perdent velocitat.

• Zona 4: Es suposa que l’accelerador s’ha mantingut a un valor menor que la consigna de la zona 2 però major que zero. Si es prem el fre, s’activarà el flag de frenada. A partir d’aquí, a cada interrupció del Timer3, s’anirà decrementant la velocitat tot seguint la rampa de frenada (de pendent més brusc que l’acceleració i la desacceleració).

• Zona 5: La frenada només podrà arribar fins al valor de velocitat que indica l’última conversió d’accelerador. Se suposa que aquest no ha de ser el comportament normal, ja que per a frenar s’hauria d’haver deixat anar del tot l’accelerador. No obstant, aquesta situació s’ha solucionat d’aquesta manera.

• Zona 6: Finalment es porta l’accelerador a la posició inicial, de manera que es prem el fre i la velocitat es va reduint fins arribar a zero.

2.2.1.4 Inicialització de la Visualització de Velocitat.

Per tal d’inicialitzar la visualització de la velocitat amb la roda de LEDs, es necessita posar a 1 lògic només una sortida del Shift Register i la resta a 0 lògic, de manera que quan es vagi generant el clock de velocitat, aquest 1 lògic vagi corrent per la resta de sortides del Shift Register, generant la visualització desitjada. Això es realitza generant una sèrie de polsos a l’entrada de Clock del dispositiu amb un 0 a l’entrada de Data per fer córrer els

Page 58: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 57 - de 137

zeros i, per últim, posar a 1 l’entrada Data i provocar un pols de clock, que inclogui l’’1’ necessari per a la roda de velocitat. Quan s’arriba a 7 polsos de rellotge, es torna a carregar un 1, per tal de reinicialitzar la roda de visualització.

Ja que no s’ha esmentat anteriorment, per a generar aquests dos senyals (Clock i Data) per al Shift Register s’utilitzen els pins portB RB14 i RB15 configurats com a sortida.

Page 59: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 58 - de 137

2.2.2 Direcció i Visualització de la Direcció.

2.2.2.1 Diagrama de Flux.

2

3

5

1

6

7

Page 60: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 59 - de 137

2.2.2.2 Càlcul de la Direcció del Vehicle.

El potenciòmetre de direcció està connectat al canal 12, per tant, la direcció es mostreja també cada 0,3 ms, igual que l’acceleració i la frenada. Quan hi ha una interrupció del conversor i el canal seleccionat és el de direcció, es llegeix el valor del buffer de conversió i es guarda en una variable. Es compara aquest valor amb l’obtingut de la ultima conversió. Si són iguals no es fa res. Si el valor és diferent, segons el valor que tingui farà activar de manera diferent els pins del PORTA que controlen els LEDs de direcció a través del demultiplexor.

2.2.3 Velocitat de Creuer.

La gestió de la velocitat de creuer es realitza en el programa principal. Quan es prem un dels polsadors de control de la velocitat de creuer, s’activa un flag que indica que la consigna de velocitat a partir d’aquest moment la marca la consigna de creuer. Com que se suposa que es configurarà la velocitat de creuer mentre el cotxe ja està anant a una certa velocitat, el que es fa és limitar les consignes entre 80 i 140 km/h, que són velocitats adequades per a la circulació en carretera. Les variacions possibles de la consigna seran de +/-10 km/h. El funcionament és senzill:

Es detecta si s’ha polsat (detectar flanc ascendent) qualsevol dels dos polsadors fent una enquesta periòdica per veure si el bit RBn associat a les potes on estan connectats els polsadors s’activa. Només es modificarà la consigna si es prem primer el polsador d’augment de consigna. Si és així, un comptador de polsos s’incrementa, s’activa el flag de velocitat de creuer que desactiva el control normal de velocitat, i es calcula el nou valor de consigna. Si s’arriba a un màxim de polsos, encara que es segueixi prement el polsador la velocitat seguirà sent la màxima disponible per a la velocitat de creuer (140km/h). el càlcul de la consigna es realitza de la següent manera:

* = (, / + × (+, / (15)

Cal recordar que el càlcul de velocitats es fa amb termes de compta de timer1 (PR1), que després es carrega al Timer1.

Si, un cop en mode de velocitat de creuer, es prem el botó de disminució de la consigna (detecció de flanc descendent), la velocitat es decrementarà en 10 km/h. això és:

* = * − (+, / (16)

Es pot veure que en aquest cas no és necessari calcular el nombre de polsos, però sí ho és limitar la consigna mínima a 80 km/h.

La relació entre compta del Timer1 i velocitat en km/h es pot veure a l’expressió 18 del punt 2.2.7.3.

La càrrega del Timer1 per a seguir la rampa d’acceleració i frenada es genera a la rutina de servei del Timer3, de la mateixa manera que en el cas de la càrrega de velocitat normal. Ara bé, en aquest cas la velocitat actual es compara amb la consigna de la velocitat de creuer.

Finalment, per a desactivar la velocitat de creuer i tornar al mode d’accelerador/fre normal, es detectarà que els dos polsadors estiguin pitjats. Llavors, el flag de velocitat de creuer es deshabilitarà.

Page 61: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 60 - de 137

2.2.3.1 Diagrama de Flux.

7

8

1

5

3 4 9

Page 62: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 61 - de 137

2.2.4 Intermitents.

2.2.4.1 Diagrama de Flux.

3

13

10

1

5

11

12

7

9

Page 63: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 62 - de 137

2.2.4.2 Càlcul de la Temporització dels Intermitents.

Com es pot veure al diagrama de flux, la generació dels intermitents també es controla amb el desbordament del Timer3. Concretament, un comptador software compta les vegades que s’executa la rutina de servei del Timer3. Sabent que aquesta s’executa cada 0,1 ms (tal com s’havia calculat abans), es pot fer que els intermitents s’encenguin i s’apaguin, per exemple, cada 0,4 segons. Això equival a que el comptador ha d’arribar a una compta de 4000 per a l’encesa i 8000 per a l’apagada. El comptador es reinicia desprès d’apagar l’intermitent.

Per activar o desactivar els intermitents ja s’ha dit a la memòria descriptiva que la solució adoptada és fer-ho mitjançant dos polsadors. El senyal dels polsadors es detectarà per mitjà de dues línies d’interrupció externa (INT1 i INT2) disponibles en els pins RP (Remmappable peripheral). El funcionament de la detecció dels polsos i l’activació i desactivació dels intermitents es pot veure al diagrama de flux.

2.2.4.3 Càlcul dels Filtres dels Intermitents.

A cadascun dels polsadors d’intermitents s’hi ha col·locat un filtre passabaixes anti-rebot. Es considera que amb una constant de temps de 10 ms és més que suficient per a detectar totes les interrupcions provinents dels polsadors. Per tant, si es col·loca un condensador de 4,7 nF, es pot calcular la resistència necessària.

= × → =

= 10 4,7 " = 1,7 Ω

(17)

Agafarem un valor comercial pròxim de 1,2 MΩ, i per tant, la constant de temps efectiva serà:

= × = 1,2 Ω × 4,7 " = 5,64

(18)

Page 64: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 63 - de 137

2.2.5 Il· luminació de frenada.

2.2.5.1 Diagrama de flux.

1

5

6

14

Page 65: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 64 - de 137

2.2.5.2 Càlcul del període del PWM.

Al punt 2.1.4.4 s’explica com generar un senyal PWM amb el mòdul perifèric Output Compare del PIC. També hi apareixen les expressions per a calcular el període del senyal. En el mòdul d’il· luminació de frenada, s’utilitza un senyal PWM de 5 KHz. Per calcular quin valor s’haurà de carregar al timer associat al senyal PWM (Timer2) per a que tingui un període de 0,2 ms, s’utilitza la següent expressió:

2 = × " – 1 = 0,2 × 4 yz

8 − 1 = 99 = 0&63

(19)

2.2.5.3 Càlcul del nou cicle de treball.

El càlcul del cicle de treball del senyal PWM de frenada es calcula en funció del valor de conversió de fre obtingut. El registre on es carrega el duty cicle és l’OC1RS, de 16 bits. Per tant, el valor a carregar ha d’anar entre 0x0000 i 0xFFFF. El rang de valors de conversió del fre va entre 0x0000 i 0x03FF. Per tant, una manera de calcular el cicle de treball del senyal PWM és carregar al registre OC1RS un valor proporcional al valor de la conversió. Així doncs:

|( = 0&""""0&3"" = 0&40

( (, () = ó | × 0&40

(20)

Page 66: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 65 - de 137

2.2.6 Visualització en pantalla LCD.

2.2.6.1 Diagrama de Flux.

2.2.6.2 Càlcul del Baud Rate.

Es vol una "A de 100 kHz. Per tant, aplicant l’expressió

2&14 = 7 ×+,, > − 1 = 19 = 0&13

(21)

1

Page 67: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 66 - de 137

2.2.7 Comunicació Sèrie amb l’Ordinador.

2.2.7.1 Diagrama de Flux.

15

1

5

16

17

7

18

Page 68: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 67 - de 137

2.2.7.2 Càlcul del Baud Rate de la Comunicació UART.

Al punt 2.1.4.5.2 es mostra una expressió per a calcular el valor del registre UxBRG segons la velocitat de transmissió que es desitja. A l’explicació sobre la comunicació via RS-232 de la memòria descriptiva s’han anomenat les velocitats de transmissió més usuals. D’aquestes, es vol trametre a 9600 bauds. Per tant, el càlcul del valor a carregar al registre U1BRG del mòdul UART1 del microcontrolador serà:

3&14 = 4 yz16 · 9600 − 1 = 25,04 ≈ 25

(22)

2.2.7.3 Adaptació de la Velocitat.

Fins ara s’ha parlat de velocitat en termes de freqüència de timer. Però s’haurà de fer una equivalència de valors de compta de timer i valors de velocitat aplicables a un automòbil per tal d’enviar-los al PC i mostrar el valor per pantalla. Per tant, abans d’enviar la velocitat s’ha de realitzar una conversió. S’ha pres la següent relació:

Per obtenir el valor de velocitat en termes de compta de timer, com es pot veure en el punt 2.2.1.3, s’ha multiplicat per un factor multiplicador. Aquest factor, multiplica el valor d’acceleració obtingut del conversor per convertir-lo a compta de timer. Si, un cop es té la compta calculada, es resta del valor de compta màxima i es divideix el resultat pel factor multiplicador, tornem a tenir la velocitat en termes de conversor AD. És a dir, valors entre 0 i 1021, que dividits entre 5, per exemple, donarien un rang de velocitat entre 0 i 204 km/h, cosa que pot ésser realista parlant d’un automòbil. A més, és un rang de valors que pot ésser enviat en un sol byte d’informació.

/(( -~ℎ 0 = ( à& − ((1

12 × 5

(23)

2.2.7.4 Sincronització de la Comunicació.

Abans de començar a realitzar transmissions cap a l’ordinador, s’esperarà a rebre un avís de l’ordinador conforme la comunicació ja pot iniciar-se. Això es fa així donat que l’ordinador esperarà les dades en l’ordre següent: En primer lloc el byte de velocitat i en segon lloc el byte de direcció. Si no es tingués la recepció habilitada al PC i el microcontrolador comencés a trametre dades, podria donar-se el cas que el programa de l’ordinador habilités la comunicació en el moment en que s’envia la dada de direcció. D’aquesta manera, s’agafaria l’ordre canviat.

Si es sap del cert que l’ordinador ja té la comunicació habilitada, es pot començar a transmetre dades sense esperar que aquestes arribin desordenades, ja que en el programa del microcontrolador ja es procura que s’enviï primer dada de velocitat i després dada de direcció.

Page 69: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 68 - de 137

2.3 Implementació Física del Sistema.

La plataforma s’ha solucionat en dues plaques PCB incloses en una caixa. Una de les plaques proporciona l’alimentació de la plataforma, mentre l’altra conté el microcontrolador, la resta de circuits integrats del sistema i els connectors que lliguen la placa amb el panell. S’ha muntat tot plegat en una caixa de material plàstic amb coberta d’alumini, on s’han col·locat tots els accionadors i visualitzadors de l’entrenador. La millor forma de veure com s’ha distribuït físicament el sistema, és veure-ho amb un diagrama que mostra les diferents parts que composen el dispositiu. Aquest es pot veure a la figura 2-17.

Figura 2-17. Diagrama general de muntatge.

La distribució del panell és la mostrada a la figura 1-17. S’hi poden veure els següents elements:

1. Interruptor general : És l’interruptor de l’alimentació del sistema. 2. Bananes de connexió: Els pins del microcontrolador que s’utilitzen es deixen

lliures, així com les connexions dels diferents mòduls de la planta. D’aquesta manera, gràcies a la possibilitat de multiplexar les funcions dels pins, els usuaris tindran força llibertat alhora de realitzar les connexions de cada mòdul. Les connexions es realitzaran al mateix panell, mitjançant cables amb punta de prova de tipus banana, que connectaran cada pota del microcontrolador amb la seva corresponent entrada/sortida provinent dels mòduls perifèrics.

3. Accionadors: Al panell hi figuraran els dials d’accelerador i fre, el botó giratori de direcció, l’interruptor d’engegada i apagada general, els polsadors d’intermitents i velocitat de creuer, i un interruptor per a fer el reset hardware al microcontrolador.

4. Visualitzadors: Al panell hi figuraran els LEDs indicadors de la direcció, els LEDs indicadors de velocitat, la pantalla LCD i la bombeta del fre.

5. Connectors: Als laterals de la caixa s’hi trobaran 3 connectors: el connector de xarxa, el connector per al dispositiu de depuració i programació MPLAB ICD2, i el connector per a la comunicació sèrie amb el PC.

Page 70: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 69 - de 137

S’ha escollit una caixa per al muntatge de plàstic, amb una coberta frontal d’alumini.

Les dimensions són 400x230x85 mm.

Finalment, s’ha fet el disseny del panell, que es mostra a la figura 2-18.

Figura 2-18. Disseny del panell de l’entrenador.

2.3.1 Muntatge.

La realització de les plaques s’ha fet pensant en la interconnexió entre placa i panel. Per això, sobretot la placa principal està formada en gran part per connectors, a banda del microcontrolador i la resta d’integrats del sistema. A continuació es mostren dues imatges de la placa principal i de la placa d’alimentació.

Figura 2-19. Placa principal.

Page 71: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 70 - de 137

Figura 2-20. Placa d’alimentació.

Un cop fetes les plaques s’han d’introduir a la caixa. Abans d’això, s’ha de condicionar la caixa per a que tots els components hi càpiguen bé i quedin ben collats. La figura 2-21 mostra com s’ha preparat la caixa mentre que la figura 2-22 permet veure una vista detallada de les plaques un cop situades a la caixa i cablejades.

Figura 2-21. Caixa condicionada.

Figura 2-22a. Placa principal collada i

cablejada. Figura 2-22b. Placa d’alimentació collada.

Page 72: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

2. Memòria de Càlcul

Pàgina - 71 - de 137

2.3.2 Posada en Funcionament.

Finalment, s’ha dut a terme la posada en funcionament del dispositiu, que ha quedat tal i com es pot veure a les figures 2-23 i 2.24.

Figura 2-23. Mòdul finalitzat.

Figura 2-25. Mòdul connectat en ús, amb ICD2 i PC.

Page 73: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Plataforma Demostradora d’Automòbil Basada en Microcontrolador

Pàgina - 72 - de 137

3. Plànols.

Page 74: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Departament d’Enginyeria Elèctrica, Electrònica i Automàtica

Títol: Plataforma demostradora d’automòbil basada en microcontrolador

Enginyer:

Josep Escoda Nolla

Supervisat:

Enric Vidal Idiarte ESQUEMÀTIC PCB_1

Escala:

1 de 7

DB9

1 2 3 4 5 6 7 8 9

X RxD

TxD

DT

RS

GN

DD

SR

RT

SC

TS

RI

J4

POWER3

12

PIC24FJ64GA004

2

3

4

5

6

7

8

9

10

11

12

13

14

28

27

26

25

24

23

22

21

20

19

18

17

16

15

1

AN0

AN1

PGD1

PGC1

RP2

RP3

Vss

RA2

RA3

RP4

RA4

Vdd

RP5

Vdd2

Vss2

RB15

RB14

RB13

an12

RB11

RB10

x

x2

SDA1

SCL1

RP7

RP6

MCLR*

U9

CON. POTENCIOMETRES

123

123

U17conector LCD

1 2 3 4 5 6

1 2 3 4 5 6

J2

POWER

12

U6

Connector bananes 1

123456789

101112131415161718

123456789101112131415161718

U14

DEMUX

123456789

101112

242322212019181716151413

STD1D2S7S6S5S4S3S2S1S0Vss

VddINH

D4D3

S10S11S8S9

S14S15S12S13

R14

C5C

R15

C6C

R16

R17

R1R

R18

R19

R20

R2R

C9C

U18

CON. POTENCIOMETRES

123

123

U6

Connector bananes 1

123456789

101112131415161718

123456789101112131415161718

R5

R6

R3

R7

R4

R8

R9

C7

R10

R11

C8

C2C

C1C

R21

MAX232

123456

161514131211109

78

C1+Vs+C1-C2+C2-Vs-

VccGND

T1OUTR1IN

R1OUTT1INT2IN

R2OUTT2OUTR2IN

U13

LLESPETS

1 2 3 4 5 6

9 10

1 2 3 4 5 6

9 10

J23POWER4

1 2

C3C

C4

C

J3

POWER2

12

J20POWER4

1 2

U19

conector polsadors

12345

12345

U7

CON. POTENCIOMETRES

123

123

U8

CON. POTENCIOMETRES

123

123

Control vel. creuer -

Clock velocitat

Sortida intermitent 1

StrobeClock v elocitat

Sortida intermitent 2

LCD SDAPWM f re

PWM f re

Sortida intermitent 1Strobe

Sortida intermitent 2

LCD SCL

Direcció2Direcció1

Intermitent 2

Intermitent 1

Control vel. creuer -

Control v el. creuer +

Control v el. creuer +

Direcció3

Direcció3

Direcció2Direcció

Direcció1Intermitent 2

Intermitent 1 Direcció

Acceleradorf re

f re

Accelerador

LED direcció 1

LED direcció 2

LED direcció 3

LED direcció 4

LED direcció 5

LED direcció 6

LED direcció 7

LED direcció 1LED direcció 2LED direcció 3LED direcció 4LED direcció 5LED direcció 6

LED direcció 7

LED v elocitat 2

LED v elocitat 3

LED v elocitat 4

LED v elocitat 5

LED v elocitat 6

LED v elocitat 7

LED v elocitat 8

LED v elocitat 1

LCD SDA

LCD SCL

LED velocitat 4LED velocitat 3LED velocitat 2LED velocitat 1

LED

S D

IRE

CC

INTERMITENT 1INTERMITENT2control vel cr.+control vel cr.-

LED

S V

ELO

CIT

AT

terra pel backlight led

ALIMENTACIÓ DE 5V

ALIMENTACIÓ 5 V

UTX

RCX

DIRECCIÓ2

control vel cr.+

LCD SDA

SO

RT

IDA

IN

TE

RM

ITE

NT

2

FRE

INTERMITENT1

ACCELERADOR

control vel cr.-

DA

TA

ST

RO

BE

DIRECCIÓ1

LCD SCL

PW

M F

RE

SO

RT

IDA

INT

ER

MIT

EN

T1

DIRECCIÓ

INTERMITENT2

DIRECCIÓ3

CLO

CK

VE

LOC

ITA

T

filtres anti-rebot

filtres anti-rebot

Alimentació 3,3 V

Alimentació 3,3 V

Alimentació 3,3 V

U23

conector bombeta

12

12

U21

CONNECTOR LEDS

123456789

101112131415161718

123456789101112131415161718

C10C

U22

Conector Leds interm

12

12

R12

R13

Q1VN10LP/TO

R22R

U20

SHIFT REGISTER 4094

12345678

161514131211109

STRDTCLKQ1Q2Q3Q4Vss

VddOEQ5Q6Q7Q8Q'sQs

LED v elocitat 8LED v elocitat 7LED v elocitat 6LED v elocitat 5

LEDS INTERMITENTs

ALIMENTACIÓ 5 V

Page 75: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Departament d’Enginyeria Elèctrica, Electrònica i Automàtica

Títol: Plataforma demostradora d’automòbil basada en microcontrolador

Enginyer:

Josep Escoda Nolla

Supervisat:

Enric Vidal Idiarte PCB_1 TOP

Escala:

2 de 7

Page 76: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Departament d’Enginyeria Elèctrica, Electrònica i Automàtica

Títol: Plataforma demostradora d’automòbil basada en microcontrolador

Enginyer:

Josep Escoda Nolla

Supervisat:

Enric Vidal Idiarte PCB_1 BOTTOM

Escala:

3 de 7

Page 77: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Departament d’Enginyeria Elèctrica, Electrònica i Automàtica

Títol: Plataforma demostradora d’automòbil basada en microcontrolador

Enginyer:

Josep Escoda Nolla

Supervisat:

Enric Vidal Idiarte

PCB_1 CARA DE COMPONENTS

Escala:

4 de 7

Page 78: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Departament d’Enginyeria Elèctrica, Electrònica i Automàtica

Títol: Plataforma demostradora d’automòbil basada en microcontrolador

Enginyer:

Josep Escoda Nolla

Supervisat:

Enric Vidal Idiarte ESQUEMÀTIC PCB_2

Escala:

5 de 7

0

0

0

0

0

00

0

U1

CONNECTOR XARXA

123

f aseneutre

terra

U2

CONVERTIDOR

1

2345

+Vout

-VoutAC inAC interra

U10

Sortida 3,3 V1

2

+Vcc

-Vcc

U11

Sortida 3,3 V1

2

+Vcc

-Vcc

U5 CON_INTERRUPTOR ALIM

1 21 2

R3

Potenciòmetre d'ajust

R4470

U6

sortida 5 V1

2

+Vcc

-Vcc

R5470

U7

Sortida 5 V1

2

+Vcc

-Vcc

U8

Sortida 3,3 V1

2

+Vcc

-Vcc

U9

REGULADOR

12

3

AdjustVout

Vin

C3C

C4

C

Page 79: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Departament d’Enginyeria Elèctrica, Electrònica i Automàtica

Títol: Plataforma demostradora d’automòbil basada en microcontrolador

Enginyer:

Josep Escoda Nolla

Supervisat:

Enric Vidal Idiarte PCB_2 BOTTOM

Escala:

6 de 7

Page 80: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Departament d’Enginyeria Elèctrica, Electrònica i Automàtica

Títol: Plataforma demostradora d’automòbil basada en microcontrolador

Enginyer:

Josep Escoda Nolla

Supervisat:

Enric Vidal Idiarte

PCB_2 CARA DE COMPONENTS

Escala:

7 de 7

Page 81: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Pataforma Demostradora d’Automòbil Basada en Microcontrolador

Pàgina - 80 - de 137

4. Pressupost.

Page 82: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 81 - de 137

4.1 Introducció.

En aquest apartat es pretén determinar, amb exactitud, el cost total requerit per a implementar la plataforma demostradora d’automòbil i el disseny de la part software del projecte.

El cost del disseny del software vindrà determinat per les hores emprades en la implementació.

El cost de la part hardware, vindrà determinat pel preu de compra de tots els components necessaris per al muntatge. Aquests components tindran un preu elevat donat que no es compren grans quantitats del mateix producte.

Per a tenir una visió més clara del cost que implica cada part del projecte, aquest es divideix per capítols. D’aquesta manera, cada capítol estudia el cost dels elements que hi prenen part. Són els següents:

• Capítol 1: Software. • Capítol 2: Placa principal. • Capítol 3: Placa alimentació. • Capítol 4: Components variats. • Capítol 5: Elements de panell. • Capítol 6: Mà d’obra.

4.2 Llistat de Preus Unitaris.

4.2.1 Capítol 1: Software.

CODI U DESCRIPCIÓ PREU UNITARI

C01_1 u MPLAB IDE v8.0 0,00 ZERO EUROS

C01_2 u MPLAB ICD2 116,78 CENT SETZE EUROS amb SETANTA-VUIT CÈNTIMS

C01_3 u C++ Builder v5.0 140,23 CENT QUARANTA EUROS amb VINT-I-TRES CÈNTIMS

C01_4 u OrCAD v9.0 115,12 CENT QUINZE EUROS amb DOTZE CÈNTIMS

4.2.2 Capítol 2: Placa Principal.

CODI U DESCRIPCIÓ PREU UNITARI

C02_1 u Microcontrolador 3,64 TRES EUROS amb SEIXANTA-

Page 83: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 82 - de 137

PIC24FJ64GA002 QUATRE CÈNTIMS

C02_2 u TRANSCEIVER MAX232 2,10 DOS EUROS amb DEU CÈNTIMS

C02_3 u Demultiplexor 14514 1,40 UN EURO amb QUARANTA CÈNTIMS

C02_4 u Shift Register 0,69 SEIXANTA-NOU CÈNTIMS

C02_5 u Font alimentació commutada 5V 10W

45,90 QUARANTA-CINC EUROS amb NORANTA CÈNTIMS

C02_6 u Potenciòmetre 10 kOhm 0,23 VINT-I-TRES CÈNTIMS

C02_7 u Terminal femella fricció PCB 2 vies.

1,92 UN EURO amb NORANTA- DOS

C02_8 u Terminal mascle fricció PCB 2 vies.

0,71 SETANTA-UN CÈNTIMS

C02_9 u Terminal femella fricció PCB 3 vies

2,64 DOS EUROS amb SEIXANTA-QUATRE CÈNTIMS

C02_10 u Terminal mascle fricció PCB 3 vies.

0,71 SETANTA-UN CÈNTIMS

C02_11 u Terminal femella fricció PCB 4 vies

2,37 DOS EUROS amb TRENTA-

SET CÈNTIMS

C02_12 u Terminal mascle fricció PCB 4 vies

0,71 SETANTA-UN CÈNTIMS

C02_13 u Terminal femella fricció PCB 5 vies

2,52 DOS EUROS amb CINQUANTA-DOS CÈNTIMS

C02_14 u Terminal mascle fricció PCB 5 vies

0,71 SETANTA-UN CÈNTIMS

C02_15 u Sòcol DIP 28 0,83 VUITANTA-TRES CÈNTIMS

C02_16 u Sòcol DIP 16 0,46 QUARANTA-SIS CÈNTIMS

C02_17 u Sòcol DIP 24, Pas 15,4 mm 0,71 SETANTA-UN CÈNTIMS

C02_18 u Transistor MOSFET 0,35 TRENTA-CINC CÈNTIMS

C02_19 u Connector DB-9 2,36 DOS EUROS amb TRENTA-SIS CÈNTIMS

C02_20 u Connector RJ-11 0,95 NORANTA-CINC CÈNTIMS

Page 84: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 83 - de 137

4.2.3 Capítol 3: Placa d’Alimentació.

CODI U DESCRIPCIÓ PREU UNITARI

C03_1 u Regulador LM317. 0,37 TRENTA-SET CÈNTIMS

C03_2 u Connector xarxa mascle 10A 250 Vac

2,52 DOS EUROS amb CINQUANTA- DOS CÈNTIMS

C03_3 u Cable de xarxa amb connector femella

2,55 DOS EUROS amb CINQUANTA- CINC CÈNTIMS

C03_4 u Interruptor amb indicador. 1,44 UN EURO amb QUARANTA- QUATRE CÈNTIMS

4.2.4 Capítol 4: Components Variats.

CODI U DESCRIPCIÓ PREU UNITARI

C04_1 u Resistència 470 Ohm 0,30 TRENTA CÈNTIMS

C04_2 u Resistència 240 Ohm 0,20 VINT CÈNTIMS

C04_3 u Resistència 50 Ohm 0,20 VINT CÈNTIMS

C04_4 u Resistència 1,2 MOhm 0,20 VINT CÈNTIMS

C04_5 u Condensador 100 nF 0,12 DOTZE CÈNTIMS

C04_6 u Condensador 1 uF 0,35 TRENTA-CINC CÈNTIMS

C04_7 u Connector 2 vies amb cargol. 0,31 TRENTA-UN CÈNTIMS

C04_8 u Placa PCB 6,00 SIS EUROS

C04_9 m Cable ø 2 mm. 1,53 UN EURO amb CINQUANTA-TRES CÈNTIMS

C04_10 m Cable ø 0,5 mm^2 0,20 VINT CÈNTIMS

C04_11 u Adaptador USB-RS232 25,82 VINT-I-CINC EUROS amb VUITANTA-DOS EUROS

C04_12 u Cargol ø 3 mm. 0,18 DIVUIT CÈNTIMS

C04_13 u Femella ø3 mm 0,03 TRES CÈNTIMS

C04_14 u Separadors 0,09 NOU CÈNTIMS

C04_15 u Resistència 1,2 MOhm 0,20 VINT CÈNTIMS

C04_16 u Condensador 4,7 nF 0,24 VINT-I-QUATRE CÈNTIMS

Page 85: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 84 - de 137

4.2.5 Capítol 5: Elements del Panell.

CODI U DESCRIPCIÓ PREU UNITARI

C05_1 u Potenciòmetre rotacional 10 kOhm.

1,20 UN EURO amb 20 CÈNTIMS.

C05_2 u Potenciòmetre lineal lliscant 50 kOhm.

3,75 TRES EUROS amb SETANTA-CINC CÈNTIMS

C05_3 u Polsador de panell 4,64 QUATRE EUROS amb SEIXANTA-QUATRE CÈNTIMS

C05_4 u Portalets ø 5mm 0,30 TRENTA CÈNTIMS

C05_5 u Led vermell ø 5 mm 0,31 TRENTA-UN CÈNTIMS

C05_6 u Led groc ø 5 mm 0,23 VINT-I-TRES CÈNTIMS

C05_7 u Led verd ø 5mm 0,12 DOTZE CÈNTIMS

C05_8 u Portabombetes E10 1,82 UN EURO amb VUITANTA-DOS CÈNTIMS

C05_9 u Bombeta incandescent E10 0,36 TRENTA-SIS EUROS

C05_10 u Caixa panell inclinat 400x230x85 mm

58,15 CINQUANTA VUIT EUROS amb QUINZE EUROS

C05_11 u Pantalla LCD I2C 26,17 VINT-I-SIS amb DISET CÈNTIMS

C05_12 u Connector femella tipus banana

1,04 UN EURO amb QUATRE CÈNTIMS

C05_13 u Connector mascle tipus banana 0,83 VUITANTA TRES CÈNTIMS

C05_14 u Comandament potenciòmetres. 0,50 CINQUANTA CÈNTIMS

C05_15 u Impressió del quadre de panell 4,00 QUATRE EUROS

4.2.6 Capítol 6: Mà d’Obra.

CODI U DESCRIPCIÓ PREU UNITARI

C06_1 h Tècnic muntador 9,40 NOU EUROS amb QUARANTA CÈNTIMS

C06_2 h Enginyer 14,50 CATORZE EUROS amb CINQUANTA CÈNTIMS

Page 86: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 85 - de 137

4.3 Quadres de Descomposats.

4.3.1 Capítol 1: Software

CODI DESCRIPCIÓ Uts. PREU IMPORT

C01_1

MPLAB IDE v8.0 1 0,00 0,00

Entorn de programació per a dispositius PIC

C01_2 MPLAB ICD2 1 116,78 116,78

In circuit debugger.

C01_3 Borland C++ Builder v5.0 1 140,23 140,23

Entorn de programació orientat a entorn Windows

C01_4

OrCAD v9.0 1 115,12 115,12

Disseny de layouts per PCB

TOTAL PARTIDA 372,13

Puja a TRES-CENTS SETANTA-DOS EUROS amb TRETZE CÈNTIMS.

4.3.2 Placa Principal.

CODI DESCRIPCIÓ Uts. PREU IMPORT

C02_1

Microcontrolador PIC24FJ64GA002

1 3,64 3,64 Microcontrolador amb arquitectura de 16 bits, 64 KB memòria de programa, 28 pins, 8 MHz, 2-UART, 2-SPI, 2-I2C, port paral·lel, 1-A/D 10 bits.

C02_2 TRANSCEIVER MAX232

1 2,10 2,10Driver de línia RS232. 2-T/2-R.

C02_3 Demux/Decoder 14514

1 1,40 1,40Demultiplexor/Decodificador 4-16 línies.

C02_4

Shift Register

1 0,69 0,698-bit shift register. Tri State, Serial I/P. Parallel/Serial O/P. Shift register amb O/P Latches.

C02_6 Potenciòmetre 10 kOhm

1 0,23 0,23Tolerància 20%.

Page 87: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 86 - de 137

C02_7 Terminal femella fricció PCB 2 vies.

1 1,92 1,92Kit 5 unitats.

C02_8 Terminal mascle fricció PCB 2 vies.

1 0,71 0,71Kit 10 unitats.

C02_9 Terminal femella fricció PCB 3 vies

1 2,64 2,64Kit 5 unitats.

C02_10 Terminal mascle fricció PCB 3 vies

1 0,71 0,71Kit 10 unitats.

C02_11 Terminal femella fricció PCB 4 vies

1 2,37 2,37Kit 5 unitats.

C02_12 Terminal mascle fricció PCB 4 vies

1 0,71 0,71Kit 10 unitats.

C02_13 Terminal femella fricció PCB 5 vies

1 2,52 2,52Kit 5 unitats.

C02_14 Terminal mascle fricció PCB 5 vies

1 0,71 0,71Kit 10 unitats.

C02_15

Sòcol DIP 28

1 0,83 0,83Sòcol DIP 28 vies de forat passant. Espaiat 2,54 mm. 2 files. Espai entre files 7,62 mm.

C02_16

Sòcol DIP 16

2 0,46 0,92Sòcol DIP 16 vies de forat passant. Espaiat 2,54 mm. 2 files. Espai entre files 7,62 mm.

C02_17

Sòcol DIP 24, Pas 15,2 mm

1 0,71 0,71Sòcol DIP 24 vies de forat passant. Espaiat 2,54 mm. 2 files. Espai entre files 15,24 mm.

C02_18 Transistor MOSFET ZVN2110

1 0,35 0,35Transistor de canal N, Rds(on) = 4 Ohm.

C02_19 Connector DB-9 femella PCB

1 2,36 2,36Connector femella DB9 amb femelles laterals.

C02_20 Connector RJ-11 1 0,95 0,95

Page 88: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 87 - de 137

Connector RJ de muntatge PCB.

TOTAL PARTIDA 26,47

Puja a VINT-I-SIS EUROS amb QUARANTA-SET CÈNTIMS.

4.3.3 Placa d’Alimentació.

CODI DESCRIPCIÓ Uts. PREU IMPORT

C03_1

Regulador LM317

1 0,37 0,37Regular lineal de Tensió. Vout típica +1,2-+37 V. Iout màx. 100 mA. Regulació de línia 0,004 %.

C03_2

Connector xarxa mascle 10A 250 Vac

1 2,52 2,52Connector mascle amb fusible per muntatge PCB. Tipus de connector C-14. Tensió nominal 250 V. Corrent nominal 10 A.

C03_3

Cable de xarxa amb connector femella

1 2,55 2,55Cable de xarxa IEC amb connector femella. Corrent nominal 6 A. Tensió nominal 250 Vac. Longitud 2,50 m.

C03_4

Interruptor amb indicador

1 1,44 1,44Interruptor lluminós de balancí DPST vermell. Contacte de plata caixa de niló 6.6.

C02_5

Font alimentació commutada PCB 5V 10W

1 45,90 45,90Entrada 85-264 Vac, 110-375 V CC. Sortida 5 V, 2 A. Potència nominal 10 W. Arrissat 100 mA rms.

TOTAL PARTIDA 52,78

Puja a CINQUANTA-DOS EUROS amb SETANTA-VUIT CÈNTIMS.

4.3.4 Components Variats.

CODI DESCRIPCIÓ Uts. PREU IMPORT

C04_1 Resistència 470 Ohm

1 0,30 0,30 Tolerància +/-20%. 0,5 W.

Page 89: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 88 - de 137

C04_2 Resistència 240 Ohm

2 0,20 0,40 Tolerància +/-20%. 0,5 W.

C04_3 Resistència 50 Ohm

17 0,20 3,40 Tolerància +/-20%. 0,5 W.

C04_4 Resistència 1,2 MOhm

4 0,20 0,80 Tolerància +/-20%. 0,5 W.

C04_5 Condensador 100 nF

7 0,12 0,78 Tolerància +/- 10%. 100 V

C04_6 Condensador 1 uF

5 0,35 1,75Tolerància +/- 10%. 100 V

C04_7 Connector 2 vies amb cargol

10 0,31 3,10Terminal per a PCB negre 2 vies. Pas de 5,08 mm.

C04_8 Placa PCB

1 6,00 6,00

C04_9 Cable ø 1 mm^2.

5 1,53 7,67Cable de prova PVC. 1mm^2.

C04_10 Cable ø 0,5 mm^2

5 0,20 1,00

C04_11 Adaptador USB-RS232

1 25,82 25,82Cable adaptador de USB a RS-232.

C04_12 Cargol ø 3 mm.

2 0,18 0,36Cargol de cap circular.

C04_13 Femella ø 3 mm.

6 0,03 0,18Femella per a cargol de 3 mm de diàmetre.

C04_14 Separadors

6 0,09 0,54Separadors de 2 cm. Rosca 3 mm de diàmetre.

C04_15 Resistència 1,2 MOhm

4 0,20 0,805% tolerància. 0,5 W.

C04_16 Condensador 4,7 nF 4 0,24 0,96

Page 90: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 89 - de 137

5% tolerància, 0,5 W.

TOTAL PARTIDA 53,86

Puja a CINQUANTA-TRES EUROS amb VUITANTA-SIS CÈNTIMS.

4.3.5 Elements del Panell

CODI DESCRIPCIÓ Uts. PREU IMPORT

C05_1

Potenciòmetre rotacional 10 kOhm.

2 1,20 2,40Potenciòmetre rotacional de 10 kOhm. Gir 270º. Pista de carbó. Lineal. Tolerància +/- 20 %. Longitud de l’eix 50 mm.

C05_2

Potenciòmetre lineal lliscant 50 kOhm.

2 3,75 7,50Potenciòmetre guia lliscant 50 kOhm lineal 60 mm. Tolerància +/- 20 %. Pista de carbó.

C05_3

Polsador de panell 4 4,64 18,56

Polsador estàndard. Contacte normalment obert

C05_4

Portaleds ø 5mm 17 0,30 5,10

Diàmetre exterior 8 mm.

C05_5

Led vermell ø 5 mm

8 0,31 2,48Led vermell 5 mm, 1,8 V, 20 mA. Intensitat lluminosa 1,8 mcd

C05_6

Led groc ø 5 mm

2 0,23 0,46Led groc 5 mm, 1,8 V, 7 mA. Intensitat lluminosa 1,8 mcd.

C05_7

Led verd ø 5 mm

7 0,12 0,84Led verd 5 mm, 1,9 V, 7 mA. Intensitat lluminosa 1,8 mcd.

C05_8

Portabombetes E10 1 1,82 1,82

C05_9

Bombeta incandescent E10 1 0,36 0,36

Caixa panell inclinat 400x230x85 mm 1 58,15 58,15

Page 91: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 90 - de 137

C05_10 Caixa panell inclinat 400x230x86/35 mm. Material del cos ABS i panell d’alumini.

C05_11

Pantalla LCD I2C

1 26,17 26,17Pantalla BATRON BT HQ 21605AV-YETF-LED04-I2C-5V.

C05_12

Connector femella tipus banana

34 1,04 35,36Muntatge en panell. Connector tipus faston. Diàmetre interior 2mm.

C05_13

Connector mascle tipus banana 34 0,83 28,22

Diàmetre 2 mm.

C05_14

Comandament potenciòmetres

2 0,50 1,00Comandament per a potenciòmetres amb tija de 5 mm.

C05_15

Impressió del quadre de panell 1 4,00 4,00

Impressió en color en paper d’enganxina.

TOTAL PARTIDA 192,42

Puja a CENT NORANTA-DOS EUROS amb QUARANTA-DOS CÈNTIMS.

4.3.6 Mà d’Obra

CODI DESCRIPCIÓ Uts. PREU IMPORT

C06_1

Enginyer programador 320 14,50 4640

C06_2

Tècnic muntador 24 9,40 225,6

TOTAL PARTIDA 4.865,6

Page 92: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

4. Pressupost

Pàgina - 91 - de 137

4.4 Resum del Pressupost.

CAPÍTOL C01: SOFTWARE 372,23

CAPÍTOL C02: PLACA PRINCIPAL 26,47

CAPÍTOL C03: PLACA D’ALIMENTACIÓ 52,78

CAPÍTOL C04: COMPONENTS VARIATS 53,86

CAPÍTOL C05: ELEMENTS DE PANELL 192,42

CAPÍTOL C06: MÀ D’OBRA 4.865,6

PRESSUPOST D’EXECUCIÓ MATERIAL 5.563,36

Despeses Generals 10% 556,34

PRESSUPOST D’EXECUCIÓ PER CONTRACTE 6.119,7

IVA 16% 979,15

PRESSUPOST DE LICITACIÓ 7.098,85

TOTAL PRESSUPOST GENERAL 7.098,85

El pressupost general puja a la quantitat de SET MIL NORANTA-VUIT EUROS amb VUITANTA-CINC CÈNTIMS.

Pel DEPARTAMENT d’ENGINYERIA L’ENGINYER TÈCNIC INDUSTRIAL

ELECTRÒNICA, ELÈCTRICA I

AUTOMÀTICA

Dr. ENRIC VIDAL IDIARTE JOSEP ESCODA NOLLA

Tarragona, 5 de juny de 2008

Page 93: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Pataforma Demostradora d’Automòbil Basada en Microcontrolador

Pàgina - 92 - de 137

5. Plec de Condicions.

Page 94: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

5.Plec de Condicions

Pàgina - 93 - de 137

5.1 Reunits

El Dr. ENRIC VIDAL IDIARTE professor titulat universitari, del Departament d’Enginyeria Electrònica, Elèctrica i Automàtica (en endavant DEEEA) de la Universitat Rovira i Virgili, (en endavant URV), amb domicili a efectes de notificacions a l’Avinguda dels Països Catalans, 26, de 43007 Tarragona.

i

El Sr. JOSEP ESCODA NOLLA, com a enginyer tècnic industrial, amb domicili a efectes de notificacions al Carrer Torres Jordi núm.10 A 8è 3a de 43005 Tarragona. Reconeixent-se mútuament la capacitat jurídica necessària per obligar a les respectives entitats mitjançant el present document.

5.2 Exposen

5.2.1 Primer

Que l’enginyer tècnic industrial Josep Escoda Nolla té experiència demostrada en l’àrea d’electrònica digital, informàtica industrial i en el Disseny de Sistemes basats en microcontrolador. Per aquest motiu el DEEEA està interessat a contractar els seus serveis.

5.2.2 Segon

Que la URV com a institució sense ànim de lucre, i que té com a finalitats principals, entre d’altres, les de formació i docència, les d’investigació i recerca i, a la vegada, les d’afavorir i recolzar els convenis de col·laboració entre les empreses i els Departaments Universitaris, està interessada a col·laborar amb Josep Escoda Nolla en les tasques de recerca i suport a la docència.

5.3 Clàusules

5.3.1 Primera.- Objectius

El DEEA i Josep Escoda Nolla col·laboraran en activitats científiques d’investigació i desenvolupament tecnològic desenvolupades per aquest departament o amb d’altres unitats de recerca amb la condició de tercers en relació al present acord.

5.3.2 Segona.- Objecte de l’acord

L’objecte d’aquest contracte és que el Sr. Josep Escoda Nolla realitzi el projecte titulat Plataforma demostradora d'automòbil basada en microcontrolador per al Departament d’Enginyeria Electrònica, Elèctrica i Automàtica de la Universitat Rovira i Virgili i a sol·licitud seva.

Page 95: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

5.Plec de Condicions

Pàgina - 94 - de 137

5.3.3 Tercera.- Condicions d’acceptació del treball

El Sr. Josep Escoda Nolla accepta realitzar el treball sol·licitat, d’acord amb el programa de treball que figura en la Memòria descriptiva.

5.3.4 Quarta.- Extensió de la col·laboració

La col·laboració s’entén en el sentit més ampli, tanmateix es veuen com a programes que necessàriament s’hauran de desenvolupar, els següents:

Execució de programes de recerca i desenvolupament.

Conveni per la utilització d’equipament i de suport en la realització i certificació d’assajos.

Per cada programa dels esmentats es definiran les línies mestres a seguir pel que fa a descripció detallada dels tipus d’accions, sistemàtica a seguir, impresos a complimentar, especialitats tècniques disponibles o qualsevol altre tipus d’informació de caire general i de procediment que faciliti la formalització dels futurs acords específics de col·laboració.

5.3.5 Cinquena.- Contingut dels programes específics

Cada projecte realitzat a l’empara d’aquest acord serà objecte d’un contracte específic, el qual haurà d’incloure, entre d’altres, els següents aspectes:

a) Definició d’objectius específics.

b) Descripció del projecte i les diferents tasques a realitzar.

c) Planificació de mitjans materials i humans necessaris i cronograma corresponent.

d) Pressupost i el seu pla de finançament.

e) Determinació de l’aplicabilitat directa del present acord en tot el que no estigui determinat de forma específica al contracte del projecte.

f) Designació de responsables directes del projecte per ambdues parts.

5.3.6 Sisena.- Coordinadors / Responsables

El DEEA designa el Dr. Enric Vidal Idiarte com a coordinador de l’acord signat amb Josep Escoda Nolla.

Per l’altra part, el coordinador que figurarà és Josep Escoda Nolla. Aquest es podrà actualitzar durant la vigència de l’acord segons convingui, comunicant-ho per escrit a l’altra part. La persona designada serà l’interlocutor i coordinador del programa de col·laboració i la persona a la que serà adreçada tota consulta, correspondència o comunicació general.

Page 96: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

5.Plec de Condicions

Pàgina - 95 - de 137

5.3.7 Setena.- Emissió d’informes

El responsable del projecte informarà regularment al DEEEA sobre la marxa dels treballs que segons la memòria li correspongui desenvolupar. Aquestes persones seran responsables de regir i impulsar les diferents tasques assignades a cada part. A la vegada seran les responsables d’emetre l’informe final de tancament del projecte amb les conclusions a què ha conduït el treball

5.3.8 Vuitena.- Durada

La durada del present acord és de 31 setmanes, comptades a partir de la data de signatura d’aquest acord. En qualsevol cas, ambdues parts contemplen la possibilitat de fer unes sessions de seguiment per tal de revisar els resultats de les diverses activitats de col·laboració, proposar-ne de noves, i definir possibles accions de millora.

5.3.9 Novena.- Principis d’actuació

El DEEA i el Sr. Josep Escoda Nolla col·laboraran en tot moment sota els principis de bona fe i eficàcia per assolir amb el millor èxit els projectes que es subscriguin.

5.3.10 Desena.- Resolució de conflictes

Després d’esgotar la via de l’acord privat i donada la impossibilitat manifesta d’arribar a una pacte acceptable per les parts davant d’un hipotètic conflicte, ambdues parts acorden que per a la resolució de qualsevol qüestió litigiosa que es plantegi a l’empara del present acord o dels contractes específics que se subscriguin en el futur, les parts se sotmetran a l’arbitratge institucional del Tribunal Arbitral de Barcelona de l’Associació Catalana per a l’Arbitratge, encarregant-li la designació d’àrbitres i administració de l’arbitratge d’acord amb el seu reglament, i sent d’obligat compliment la seva decisió arbitral. S’exceptuen d’aquesta submissió aquelles qüestions que no siguin de lliure disposició.

Abans d’emprendre cap acció contra el DEEA i/o la URV s’haurà d’haver formulat la reclamació administrativa prèvia tal com ho estableixen els articles 120 i següents de la Llei de Procediment Administratiu.

I en prova de conformitat, ambdues parts signen el present pacte, a la ciutat i en la data esmentada.

Page 97: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

5.Plec de Condicions

Pàgina - 96 - de 137

Pel DEPARTAMENT d’ENGINYERIA L’ENGINYER TÈCNIC INDUSTRIAL

ELECTRÒNICA, ELÈCTRICA I

AUTOMÀTICA

Dr. ENRIC VIDAL IDIARTE JOSEP ESCODA NOLLA

Tarragona, 5 de juny de 2008

Page 98: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Pataforma Demostradora d’Automòbil Basada en Microcontrolador

Pàgina - 97 - de 137

6. Bibliografia.

Page 99: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

6.Bibliografia

Pàgina - 98 - de 137

6.1 Llibres Consultats.

DI JASIO, L. Programming 16-bit microcontrollers in C: Learning to fly PIC 24. 2007. Oxford: Newnes. ISBN 0-7506-8292-2. ANGULO, J.Mª. [et al]. Microcontroladores avanzados dsPIC: Controladores Digitales de Señales. Arquitectura, programación y aplicaciones. 2006. Madrid: Thomson. ISBN 84-9732-385-8. CHARTE, F. Programación con C++ Builder 5. 2000. Madrid:Anaya Multimedia. ISBN 84-415-1046-6. Datasheet: PIC24FJ64GA004 Family [www.microchip.com].

6.2 Pàgines Web Consultades.

Microchip Technology Inc. (2008) Microchip Technology Inc. Is a Leading Provider of Microcontroller and Analog Semiconductors. [en línia] [consultat: 3 de juny de 2008]. Disponible a: http://www.microchip.com.

Premier Farnell plc. (2008) Farnell [en línia] [consultat: 1 de juny de 2008]. Disponible a: http://es.farnell.com.

Amidata S.A. (2008) RS online [en línia] [consultat: 25 de maig de 2008]. Disponible a: http://www.rs-online.com.

Poinset, D. (1999) Serial Communication with Borland C++ Builder [en línia] [consultat: 15 de maig de 2008]. Disponible : http://maikel.galeon.com/serie/bcbcomm.html#INTRO.

Page 100: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

Pataforma Demostradora d’Automòbil Basada en Microcontrolador

Pàgina - 99 - de 137

7. Annexes.

Page 101: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 100 - de 137

7.1 Tractament dels Ports amb les Funcions de Windows

7.1.1 Funcions d’E/S.

Funció per a obrir el port.

Per a obrir el port s’utilitza la funció CreateFile(). Aquesta funció és una funció genèrica que permet accedir a diversos recursos: ports de comunicació, fitxers, discos...

HANDLE CreateFile (LPCTSTR 1pFileName, DWORD dsDesideredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTE 1pSecurityAttribute DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, HANDLE htemplateFile );

Arguments de sortida

CreateFile retorna un manejador o Handle del port. Aquest punter és necessari per a l’accés al port. En el cas d’aquest projecte, es guardarà al hcomPort.

Arguments d’entrada

LpFileName S’indica el nom del port que es vol obrir. Al programa se li indica per mitjà del RadioButton que assigna a com el nom del port que es vol obrir. Per exemple, si es vol obrir el port COM2, s’ha de prémer el RadioButton COM2 i com tindrà el valor “COM2”.

DwDesiredAttribute S’indica el tipus d’accés, és necessari assignar el mode d’accés GENERIC_READ|GENERIC_WRITE .

DwSharedMode Mode per a compartir el mode, ha de ser “0” ja que el port sèrie no es compartirà per dos aplicacions simultàniament.

LpSecurityAttribute Descripció de seguretat, es recomana que sigui “0”.

DwCreationDistribution S’especifica quina acció es realitzarà si el fitxer existeix o si no existeix, ja que en el cas en què es treballa el fitxer sempre existeix, s’utilitzarà OPEN_EXISTING.

DwFlagsAndAttribute Especifica el tipus d’atribut del fitxer, per al port ha de ser FILE_ATTRIBUTE_NORMAL.

HtemplateFile NULL

Funció per a tancar el port

Quan ja s’ha acabat el treball amb el port, aquest s’ha de tancar, tancant el manejador i així el sistema operatiu allibera els recursos que estem ocupant. La funció

Page 102: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 101 - de 137

utilitzada és CloseHandle(). S’ha d’anar molt amb compte a no tractar un manejador no vàlid, és a dir, un manejador no inicialitzat correctament per CreateFile().

BOOL CloseHandle (HANDLE hObject)

Arguments d’entrada

HObject manejador obtingut per CreateFile.

Arguments de sortida

BOOL si és true ens indica que la funció és s’ha executat correctament.

Funció per a configurar el port

Per llegir i escriure la configuració del port s’utilitzen les funcions GetCommState () i SetCommState (), les dues funcions utilitzen com a argument una estructura de tipus DBC, en què els membres de l’estructura DBC es troben els camps a configurar. En el cas en qüestió només es configuraran els següents casos:

sComCfg.BaudRate=CBR_9600 S’indica el Baud Rate de 9600.

sComCfg.ByteSize=8 Es determina el número de bits de dades “8”.

sComCfg.Parity=NOPARITY No es vol el bit de paritat.

sComCfg.StopBits=ONESTOPBIT Un sol bit de stop.

Per al control de flux:

sComCfg.fRtsControl=RTS_CONTROL_ENABLE s’habilita la línia RTS.

sComCfg.fDtrControl=DTR_CONTROL_ENABLE s’habilita la línia DTR.

Funció on es llegirà la configuració actual del port

En aquesta funció es llegirà la configuració actual del port, prèviament obert.

BOOL GetCommState (HANDLE hFile, LPDCB 1pDBC)

Arguments d’entrada.

HFile Manejador del port retornat per CreateFile ().

LpDBC Punter a l’estructura de tipus DBC on es rebrà la configuració actual del port.

Arguments de sortida.

BOOL TRUE si la funció s’ha executat correctament.

Page 103: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 102 - de 137

Funció de configurar de port.

Amb aquesta funció es podrà configurar el port que prèviament s’ha obert.

BOOL SetCommState (HANDLE hFile, LPDCB lpDCB)

Arguments d’entrada

HFile Manejador del port retornat per CreateFile ().

LpDBC Punter a l’estructura de tipus DBC on s’utilitzarà la configuració actual del port.

Arguments de sortida

BOOL TRUE si la funció s’ha executat correctament.

Funció per a la configuració i control dels temps de lectura i escriptura.

Les funcions SetCommTimeouts() permeten configurar com es realitzarà les operacions de lectura i escriptura.

Treballa sobre una estructura COMMTIMEOUTS que defineix el temps màxim (TIMEOUT) que durarà una operació de lectura o escriptura. En el cas d’aquest projecte es configuraran els següents camps.

sTimOut.ReadIntervalTimeout=0 Temps màxim d’esperes (ms) entre dos bytes rebuts.

sTimOut.ReadTotalTimeoutMultiplier=0 Multiplicador (ms) per a calcular el TIMEOUT total en operacions de lectura.

sTimOut.ReadTotalTimeoutConstant=0 Constant (ms) per a calcular el TIMEOUT total en operacions de lectura.

sTimOut.WriteTotalTimeoutMultiplier=0 Multiplicador (ms) per a calcular el TIMEOUT total en operacions d’escriptura.

sTimOut.WriteTotalTimeoutConstant=0 Constant (ms) per a calcular el TIMEOUT total en operacions d’escriptura.

Es posen tots els camps a cero per a que les operacions de lectura i escriptura no finalitzin fins que no es llegeixin tots els bytes que es demanen.

Funció de llegir i escriure al Port.

Per llegir i escriure al port s’utilitzen les funcions genèriques ReadFile() i WriteFile(), les dues són funcions genèriques que permeten llegir o escriure en fitxers , port, etc. En aquest cas permetrà llegir o escriure al port sèrie obert.

Funció ReadFile.

Page 104: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 103 - de 137

BOOL ReadFile (HANDLE hFile, LPVOID IpBuffer, DWORD nNumberOfBytesToRead, LPDWORD 1pNumberofBytesRead, LPOVERLAPPED lpoverlapped)

Arguments d’entrada

hFile Manejador del port retornat per CreateFile().

IpBuffer Punter al buffer on la funció dipositarà les dades llegides.

NnumberOfByteRead Número de bytes que es volen llegir.

IpNumberOfByteRead Punter a una DWORD on la funció indicarà les dades que realment s’han llegit.

IpOverlapped Punter a una estructura OVERLAPPED per a accés especial a port. No s’utilitza ja que és un mode especial d’accés.

Arguments de sortida

BOOL True si la funció s’ha executat correctament.

Funció WriteFile.

BOOL WriteFile (HANDLE hFile, LpVOID IpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD 1pNumberofBytesWrite, LPOVERLAPPED lpoverlapped)

Arguments d’entrada

hFile Manejador del port retornat per CreateFile().

IpBuffer Punter al buffer on la funció llegirà les dades que escriurà al port.

NnumberOfByteRead Número de bytes que s’escriuran en el port.

IpNumberOfByteRead Punter a una DWORD on la funció indicarà les dades que realment s’han escrit.

IpOverlapped Punter a una estructura OVERLAPPED per a accés especial a port. No s’utilitza ja que és un mode especial d’accés.

Arguments de sortida

BOOL True si la funció s’ha executat correctament.

Buffer del transmissor i del receptor.

Totes les comunicacions mitjançant el API de WINDOWS es realitzen a través del buffer tant per a la transmissió com per a la recepció. Quan s’ha obert el port i s’ha configurat, qualsevol caràcter que arribi al port serà emmagatzemat al buffer del receptor de forma automàtica per al sistema operatiu. De la mateixa manera, quan s’escrigui al port,

Page 105: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 104 - de 137

es farà a través del buffer del transmissor, el programa escriurà en ell i el sistema operatiu anirà enviant les dades de forma totalment automàtica.

FuncióSetupComm().

Aquesta funció configura la mida dels buffers d’entrada i sortida.

BOOL SetupComm (HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue)

Arguments d’entrada

hFile Manejador del port retornat per CreateFile().

DwInQueue Mida que es desitja per al BUFFER del receptor.

DwOutQueue Mida que es desitja per al BUFFER del transmissor.

Arguments de sortida

BOOL True si la funció s’ha executat correctament.

Netejar el Buffer Rx i Tx.

Si es vol buidar el buffer del transmissor o receptor, s’utilitzarà la funció PurgeCommr() o si el que es vol és buidar el buffer del transmissor, però garantir que es transmeti tot el seu contingut, llavors s’ha d’utilitzar la funció FlushFileBuffers().

Funció PurgeCommr()

BOOL PurgeCommr(HANDLE hFile, DWORD dwFlags);

Arguments d’entrada

hFile Manejador del port retornat per CreateFile().

DxFlags És un dels següents valors (o una combinació d’ells): PURGE_TXABORT O PURGE_TXCLEAR Per a netejar el buffer del transmissor. PURGE_RXABORT O PURGE_RXCLEAR Per a netejar el buffer del receptor.

Arguments de sortida

BOOL True si la funció s’ha executat correctament.

Page 106: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 105 - de 137

7.2 Programació amb MPLAB IDE v8.0.

7.2.1. Creació d’un Projecte.

Un projecte és un conjunt d’arxius font i instruccions que permeten construir l’objecte i el codi executable per a una aplicació. Un cop es té l’MPLAB IDE en marxa per crear un projecte s’ha d’anar a l’opció New del menú Project.

S’obrirà una finestra a la qual s’introduirà el nom del projecte en el camp Project Name, i s’escollirà la carpeta on es guardarà el projecte al camp Project Directory. Un cop escollits ambdós es pot acceptar amb el botó OK. Els projectes a la versió MPLAB IDE v8.0 tenen l’extensió *.mcp.

Figura 7-1. Creació d’un projecte.

Un cop s’ha creat el projecte, s’ha d’escollir quin compilador s’utilitzarà, en aquest

cas el compilador MPLAB C30 Compiler. La selecció es fa a les opcions Select Language toolsuite i Select Language Tool Location del menú Project seleccionant el MICROCHIP C30 Toolsuite.

Figura 7-2. Selecció del compilador C30.

7.2.2. Creació d’un Arxiu de Treball.

S’ha de crear un arxiu de text a on s’escriurà el programa que es vol executar.Amb aquesta finalitat es crea un nou arxiu amb l’opció New del menú File.

Page 107: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 106 - de 137

Apareix una nova finestra, com es mostra a la figura 7-3 amb la paraula Untitled, indicant que no té nom.

Figura 7-3. Creació de nou codi font.

En aquest moment ja es pot començar a generar el codi font del programa que volem

implementar. Es recomana guardar i vincular l’arxiu del codi al projecte abans de començar a escriure les instruccions. Es fa amb l’opció Save as i guardant-ho com a arxiu *.c en aquest cas. Ara s’ha de fer clic sobre Source Files a la finestra on apareix el nostre projecte i escollim Add Files.

Figura 7-4. Vinculació del codi font al projecte.

S’ha d’escollir l’arxiu que hem creat i guardat i fer clic al botó Obrir. D’aquesta

manera el codi queda afegit al projecte. De la mateixa manera es poden afegir les llibreries, les capçaleres i els lincadors, a l’opció Add File de Library Files, Header Files i Linker Scripts respectivament.

Per acabar de preparar el projecte del nostre programa es necessita indicar quin tipus

de dispositiu utilitzarem. Per això s’escull l’opció Select Device del menú Configure.

Page 108: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 107 - de 137

Apareixerà una nova finestra com la mostrada a la figura 7-5. S’escull el dispositiu (en aquest cas PIC24FJ64GA002) i s’accepta amb el botó OK.

Figura 7-5. Selecció del dispositiu.

7.2.3. Simulador.

La simulació és una manera de saber si el programa que s’ha realitzat funciona com es desitja o no. Microchip facilita algunes eines com l’MPLAB SIM que ens permeten observar el comportament del programa.

S’ha d’habilitar l’opció del simulador seleccionant l’opció MPLAB SIM a Select Tool del menú Debugger.

S’ha d’assegurar que la freqüència del cristall amb el que es treballarà al circuit sigui la mateixa que la del simulador, per això, s’ha d’anar a l’opció Settings del menú Debugger i escollir la freqüència adequada.

Figura 7-6. Elecció de la freqüència del PIC per a la simulació.

Page 109: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 108 - de 137

Amb aquesta configuració ja es pot començar a treballar amb el programa que es vol implementar. Un cop hem acabat d’escriure el codi en el fitxer *.C s’ha de compilar el programa per verificar que no hi ha errors. Això es fa amb l’opció Make <F10> del menú Project. Apareixerà una finestra de sortides on apareixeran els diferents errors i warnings del nostre codi, tot indicant a quina línea de codi s’han produït. Un cop solucionats els errors, en aquesta pantalla hi apareixerà el missatge BUILD SUCCEEDED, que indicarà que s’ha compilat el programa correctament. A partir d’aquí ja podem simular el funcionament de l’aplicació.

Figura 7-7. Finestra Output amb compilació completada.

L’MPLAB SIM disposa d’una sèrie de comandaments per a realitzar les simulacions, són els següents:

• Run <F9>: Executa la simulació i s’atura quan troba un Breakpoint. • Step Into <F7>: Executa línea a línea el programa.

• Step Over <F8>: Executa línea a línea el programa fins a finalitzar la instrucció call.

• Breakpoints<F2>: Permet realitzar un punt d’aturada al programa.

• Stopwatch: Permet veure en una finestra el temps que s’executa cada comanda o el temps entre breakpoints.

• Stimulus: Permet simular entrades digitals, canvis d’estat i polsos dels ports.

Es podrà apreciar millor el comportament del dispositiu amb la llista d’opcions del menú View:

• Program memory: Mostra la memòria de programa i les instruccions a la seva posició real.

• File Registers: Permet veure una llista de tots els registres del microcontrolador. • Watch: Permet afegir en una finestra els registres i variables que es desitja observar

durant la simulació.

Page 110: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 109 - de 137

Figura 7-8. Finestres Watch, Program Memory i File Registers.

7.2.3.1 Eina Stimulus.

Aquesta eina permet aconseguir “botons” que permeten accionar les patilles d’entrada del PIC. Per seleccionar-la s’ha de seleccionar l’opció Stimulus del menú Debugger.

Apareixerà una nova finestra com la mostrada a la figura 7-9.

Figura 7-9. Eina Stimulus.

A la figura apareix la generació d’un senyal de rellotge al pin RB5, amb un temps a nivell alt de 10 cicles i 10 més a nivell baix. S’especifica també el nivell inicial, el moment en que s’activarà el senyal de clock i el moment final. Si es prem el botó Apply, es fa efectiu el senyal especificat. Es pot veure a la finestra Output el missatge Synchronous stimulus applied successfully. En començar la simulació del programa, si s’utilitza l’eina

Page 111: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 110 - de 137

Watch es podrà anar veient els canvis de valor del pin al qual s’ha aplicat el senyal de clock.

Un altre tipus de senyal que es pot generar són senyals asíncrons, és a dir, que es poden produir en qualsevol moment durant la simulació. La generació d’aquests senyals es fa a la pestanya Asynch de la finestra Stimulus. Aquí s’hi pot escollir el pin, l’acció que es vol realitzar sobre aquest i l’amplada (si és que es vol generar un pols). Per fer efectiva l’acció s’ha de prémer el botó Fire durant l’execució del codi. Aquet tipus de senyals podrien simular l’acció de polsadors, interruptors, polsos d’altres dispositius, etc.

Un altre tipus de senyal que pot ser útil per a simular son les senyals que van variant amb el temps, com podria ser la lectura del conversor A/D. L’eina Stimulus permet generar senyals d’aquest tipus amb les opcions Register Injection i Register Trace. Aquí s’hi pot escollir el registre o la variable a la que volem donar valors, el valor del comptador de programa, la durada de cada valor, la ubicació del fitxer, i el tipus de dada que li donarem (decimal, hexadecimal, etc). El fitxer que s’ha de crear ha de ser un fitxer de text .txt i ha de contenir una columna amb els diferents valors que ha d’anar prenent el registre o variable escollit. Es pot escollir que la seqüència es vagi repetint o no i el temps de durada de cada un dels valors.

7.2.4. Depuració i Programació amb MPLAB ICD 2.

Amb aquesta eina es pot programar el microcontrolador i depurar el programa. Per a seleccionar-lo, s’ha d’anar a l’opció Select Tool del menú Debugger (per depurar) o a l’opció Select Programmer del menú Programmer (per programar). Si la placa està ben connectada i l’ICD2 també, apareixerà a la finestra Output informació sobre l’estat de la connexió.

Figura 7-10. Finestra output, connexió ICD 2.

Si tot va correctament, en mode debugger es podrà carregar el programa a la memòria del microcontrolador i executar-lo, podent aturar l’execució en qualsevol moment per consultar allò que es necessiti. Igual que en l’eina MPLAB SIM, també es poden utilitzar les opcions de visualització de registres i variables File Registers i Watch.

Si sorgeix algun error en la connexió amb el dispositiu, l’MPLAB ofereix l’opció de realitzar un auto-test a l’ICD2. Aquest test comprova que les alimentacions del dispositiu siguin correctes. Això es pot fer anant a l’opció Settings del menú Debugger. Aquí també s’hi podrà configurar el port on es connectarà el dispositiu, l’estat de connexió, les limitacions, i altres opcions de configuració.

Page 112: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 111 - de 137

Utilitzant el dispositiu en mode debugger, es tenen diverses opcions a l’hora d’executar el programa. Apareixen una sèrie d’icones a la barra de menús de l’MPLAB. Són els següents:

Figura 7-11. Comandaments d’execució de programa.

Amb aquestes opcions es pot anar executant pas a pas el programa. Es poden utilitzar les opcions vistes per al MPLAB SIM (Watch, Breakpoints, etc.). També apareix a la imatge el botó que reinicia la connexió amb l’ICD2 i les opcions per a carregar el programa i reiniciar-lo.

Consideracions a tenir en compte.

Quan es connecta el dispositiu ICD2 al port USB, s’han de seguir els següents passos:

1. Connectar l’ICD 2 a la placa i a l’USB. 2. Entrar a l’MPLAB IDE. 3. Seleccionar L’ICD 2 com a debugger. 4. Desprès d’establir comunicació amb MPLAB ICD 2, anar a l’opció Settings

del menú Debugger. 5. Entrar a la pestanya Power i comprovar que la pestanya “Power target

circuit from MPLAB ICD 2” no està activada. 6. Alimentar la placa i anar a l’opció de connectar de nou a l’ICD 2. 7. Ara ja es pot carregar programes i comprovar-los sense problemes.

Page 113: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 112 - de 137

7.3 Manual d’Usuari del Programa Vehicle.exe.

El programa vehicle.exe és el programa que fa d’interfície entre microcontrolador, PC i usuari. El funcionament és força senzill. Inicialment, apareixerà una pantalla com la que es mostra en la figura següent:

Figura 7-12. Finestra del programa vehicle.exe

La finestra del programa consta de diferents parts:

• La barra de menú, amb diferents opcions. • La zona d’habilitació i deshabilitació del port de comunicacions. • La zona de successos, on es mostren diferents missatges durant l’execució. • La zona d’enviament de comandes a la plataforma demostradora. • LA zona de visualització de dades rebudes.

Page 114: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 113 - de 137

Per a començar a utilitzar el programa el primer que s’ha de fer és obrir el port sèrie que es vol utilitzar per realitzar la comunicació. Per això, s’ha de seleccionar el port COM que es desitja utilitzar i prémer al botó ON/OFF. També es pot fer des de l’opció Connectar del menú Comunicació. Si el port s’obre exitosament, el botó es posarà de color verd, i a la finestra de text Successos hi apareixerà el missatge de “connexió habilitada”. Si pel contrari, l’obertura i configuració del port dóna algun error, apareixerà un missatge emergent amb el problema ocorregut i a continuació el botó es tornarà vermell i a la finestra de text hi apareixerà el missatge “Connexió inhabilitada”.

Si es vol tornar a deshabilitar el port, només cal tornar a prémer el botó ON/OFF o bé fer clic a l’opció Desconnectar del menú Comunicació.

A partir d’aquí, si tenim connectat el mòdul ja estem en disposició d’iniciar la comunicació. Per començar a rebre dades del microcontrolador s’haurà de prémer el botó Iniciar visualització. Ara es començaran a rebre les dades de velocitat, mostrades al centre del vehicle mostrat a la finestra de programa, i les dades de direcció, mostrades amb indicadors de colors molt semblants als dispositius de la plataforma.

A més, es mostra l’encesa i apagada d’intermitents, i la consigna de velocitat de creuer. També es disposa dels comandaments per accionar els intermitents i per aturar-los, i uns altres per enviar consignes de velocitat de creuer.

Per últim, es mostra una gràfica en temps real de les rampes d’acceleració i frenada q va seguint el vehicle.

Per sortir del programa s’ha d’anar a l’opció Sortir del menú Programa.

Page 115: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 114 - de 137

7.4 Codi Font Microcontrolador.

7.4.1 Definicions.h. /*------------------------------------------------- -------- CODI definicions.h AUTOR Josep Escoda Nolla Tarragona, 2008 PROJECTE: Plataforma Demostradora d'Automòbil Basada en Microcontrolador --------------------------------------------------- ------*/ //Comunicació int enviar_direccio=0; int mostrar_vel=0; int mostrar_dir=0; int lectura2=0; int tic_enviar=0; int inici_com=0; //Velocitat int ADCValue_ac=0; int ADCValue_fr=0; int ADCValue_fr_Old=0; int ADCValue_ac_Old=0; int velocidad=0; int velocidad2=0; int accelerant=0; int desaccelerant=0; int increment_ac=0; int increment_fr=0; int frenant1=0; int frenada=0; int Duty_Cicle=0; int tic_desacceleracio=0; int flag=0; int tic_roda=0; //Direcció int ADCValue_dir=0; int ADCValue_dir_Old=0; //Creuer int Creuer=0; int velocitat_creuer=0; int anterior=0; int anterior2=0; //Intermitents int tic_intermitents=0; int intermitents=0; int intermitent_dret=0; int intermitent_esquerre=0; int pols1=0; int pols2=0;

Page 116: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 115 - de 137

7.4.2 Inicialitzacions.h. /*------------------------------------------------- -------- CODI inicialitzacions.h AUTOR Josep Escoda Nolla Tarragona, 2008 PROJECTE: Plataforma Demostradora d'Automòbil Basada en Microcontrolador --------------------------------------------------- ------*/ #include <p24FJ64GA002.h> //CONFIGURACIÓ GENERAL void Config_ini() CLKDIV=0; //Es treu el divisor d'oscil·lador PMCON=0; //Es deshabilita el port paral·lel //per a lliberar els pins E/S //INICIALITZACIÓ TIMER 1 void Timer1_Ini () TMR1=0x0000; PR1=0x0000; //Inicialment període a 0 T1CON=0x8020; //Enable/ Prescaler 1:64 //INICIALITZACIÓ TIMER 3 void Timer3_Ini() TMR3=0x0FFF; PR3=0x0190; //Període 0,1 ms T3CON=0x8000; //Enable/Prescaler 1:1 //CONVERSOR A/D void AD_ini() AD1PCFG=0x0FFC; //AN0, AN1, AN12 com a AI AD1CON1 = 0x0040; AD1CON2 = 0x0000; AD1CON3 = 0x1F09; //Clock del sistema, //Tad = 128 Tcy AD1CHS = 0x0000; //Es selecciona canal 0 AD1CSSL = 0; //No input scan //PORTS E/S void RB_config() PORTB=0; //Sortides direcció TRISAbits.TRISA2=0; TRISAbits.TRISA3=0; TRISAbits.TRISA4=0; //Velocitat de creuer TRISBbits.TRISB4=1; //vel. creuer + TRISBbits.TRISB5=1; //vel.creuer -

2

3

4

9

Page 117: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 116 - de 137

//Sortides intermitents TRISBbits.TRISB10=0; //intermitent dret TRISBbits.TRISB11=0; //intermitent esquerre //pins UART TRISBbits.TRISB6=1; //U1RX TRISBbits.TRISB7=0; //U1TX //OUTPUT COMPARE PWM void PWM_ini () T2CON=0x0010; //Derivat clock intern //Prescaler 1:8 RPOR6bits.RP13R=18; //S'assigna pin RP13 //com a sortida OC1 OC1CONbits.OCTSEL=0; //Timer2 es la font de //rellotge OC1 TMR2=0x0000; PR2=0x0063; //Es carrega el període //5 kHz OC1RS=0x0000; //Duty Cicle 0 OC1R=0x0000; //Duty cicle inicial 0 OC1CONbits.OCM=0b110; //mode PWM T2CONbits.TON=1; //Habilitació Timer 2 //Interrupció externa 2 void INT2_ini() INTCON2=0x0000; //Vector estrandard //DISI inactiva //INT2 i INT1 flanc positiu RPINR1bits.INT2R=3; //RP3 assignat a INT2 //Interrupció Externa 1 void INT1_ini() RPINR0bits.INT1R=2; //RP2 assignat a INT1 //UART void UART_ini() U1TXREG=0; //Registre de transmissió a 0 U1RXREG=0; //Registre de recepció a 0 RPINR18bits.U1RXR=6; //Entrada U1RX pin RP6 RPOR3bits.RP7R=3; //Sortida U1TX pin RP7 U1MODE=0x0000; //configurem enviament de 8-bits //sense paritat //i un bit d'Stop U1BRG=25; //Baud Rate de 9600 bauds U1STA=0x0000; //Interrupció de transmissio //Quan un caracter transmés //Interrupció de recepció en //rebre un caràcter U1MODEbits.UARTEN=1; //Habilitació la UART1 U1STAbits.UTXEN=1; //Habilitació de la transmissió

11

10

14

15

Page 118: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 117 - de 137

//Habilitacó d’interrupcions void habilitar_Interrupcions() //Timer 1 IPC0bits.T1IP=3; //Prioritat 1 IFS0bits.T1IF=0; //Flag a 0 IEC0bits.T1IE=1; //S'habilit interrupció //Timer3 IPC2bits.T3IP=2; //Prioritat 2 IFS0bits.T3IF=0; //Flag a 0 IEC0bits.T3IE=1; //S'habilita interrupció //CONVERSOR A/D IPC3bits.AD1IP=1; //Prioritat 1 IFS0bits.AD1IF = 0; //Flag a 0 IEC0bits.AD1IE = 1; //S'habilita la interrupció //INTERRUPCIÓ EXTERNA 2 IPC7bits.INT2IP=6; //Prioritat 6 IFS1bits.INT2IF=0; //Flag a 0 IEC1bits.INT2IE=1; //S'habilita la interrupció //INTERRUPCIÓ EXTERNA 1 IPC5bits.INT1IP=7; //Prioritat 7 IFS1bits.INT1IF=0; //Flag a 0 IEC1bits.INT1IE=1; //S'habilita la interrupció //UART //Transmissió IFS0bits.U1TXIF=0; //Flag a 0 IPC3bits.U1TXIP=5; //Prioritat 5 IEC0bits.U1TXIE=0; //Habilitació de la interrupció //Recepció IFS0bits.U1RXIF=0; //Flag a 0 IPC2bits.U1RXIP=4; //Prioritat 4 IEC0bits.U1RXIE=1; //Habilitacó de la interrupció void inicialitzacio_LEDs() int espera=0; int alt=0; PORTBbits.RB14=0; PORTBbits.RB15=0; while (espera!=16) //Mentre no ompli el shift //Register de zeros espera++; //incrementem la compta if (alt==0) //generem clock alt=1; PORTBbits.RB15=1; if (alt==1) alt=0; PORTBbits.RB15=0;

5

Page 119: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 118 - de 137

espera=0; PORTBbits.RB14=1; //posem Data a 1 PORTBbits.RB15=1; //Donem senyal de clock per //engegar el primer LED

7.4.3 codi_principal.c. /*------------------------------------------------- -------- CODI auto.c AUTOR Josep Escoda Nolla Tarragona, 2008 PROJECTE: Plataforma Demostradora d'Automòbil Basada en Microcontrolador --------------------------------------------------- ------*/ #include <p24FJ64GA002.h> #include <stdio.h> #include <definicions.h> #include <inicialitzacions.h> /*------------------------------------------------- -------- RSI Transmissió UART1 --------------------------------------------------- ------*/ void __attribute__ ((__interrupt__)) _U1TXInterrupt ( void ) if (enviar_direccio==1) //Si ja s'ha enviat velocitat enviar_direccio=0; //Es reseteja el flag U1TXREG=mostrar_dir; //s'envia la direcció IFS0bits.U1TXIF=0; //Fi RSI transmissió UART /*------------------------------------------------- ---- RSI Recepció UART --------------------------------------------------- ------*/ void __attribute__ ((__interrupt__)) _U1RXInterrupt ( void ) lectura2=U1RXREG; //Es guarda el valor del buffer de recepció switch (lectura2) //Es mira quina ordre s'ha rebut case 0x01: //Ordre d'encesa intermitent dret intermitents=1; intermitent_dret=1; intermitent_esquerre=0; break ; case 0x02: //Ordre d'encesa intermitent esquerre intermitents=1; intermitent_esquerre=1; intermitent_dret=0; break ; case 0x03: //Ordre d'aturada d'intermitents

16

17

Page 120: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 119 - de 137

intermitents=0; PORTBbits.RB10=0; //S'apaga intermitent dret PORTBbits.RB11=0; //S'apaga intermitent esquerre break ; case 0x08: //Recepció velocitat de creuer 80 Creuer=1; //S'activa flag de velocitat de creuer velocitat_creuer=0x2A49; //Es carrega la velocitat corresponent break ; case 0x09: //Recepció velocitat de creuer 90 Creuer=1; //S'activa flag de velocitat de creuer velocitat_creuer=0x27F1; //Es carrega la velocitat corresponent break ; case 0x10: //Recepció velocitat de creuer 100 Creuer=1; //S'activa flag de velocitat de creuer velocitat_creuer=0x2599; //Es carrega la velocitat corresponent break; case 0x20: //Recepció velocitat de creuer 110 Creuer=1; //S'activa flag de velocitat de creuer velocitat_creuer=0x2341; //Es carrega la velocitat corresponent break ; case 0x30: //Recepció velocitat de creuer 120 Creuer=1; //S'activa flag de velocitat de creuer velocitat_creuer=0x20E9; //Es carrega la velocitat corresponent break ; case 0x40: //Recepció velocitat de creuer 130 Creuer=1; //S'activa flag de velocitat de creuer velocitat_creuer=0x1E91; //Es carrega la velocitat corresponent break ; case 0x50: //Recepció velocitat de creuer 140 Creuer=1; //S'activa flag de velocitat de creuer velocitat_creuer=0x1C39; //Es carrega la velocitat corresponent break ; case 0x60: //Inici de comunicació amb el PC inici_com=1; break; case 0x70: inici_com=0; //Fi de comunicació amb el PC break ; IFS0bits.U1RXIF=0; //Es baixa el flag d'interrupció /*------------------------------------------------- --------------------- RSI Timer 1 La freqüència d'execució d'aquesta rutina és vari able i depén de la compta que es carrega el registre PR1 del Timer1 per a la generació de velocitat. --------------------------------------------------- --------------------*/ void __attribute__ ((__interrupt__)) _T1Interrupt ( void ) /*---------------------------- GENERACIO CLOCK DE VELOCITAT mitjançant un flag s'activa i es desactiva un pin del PORTB per a la generació del clock del Shift Register. ----------------------------*/ if (flag)

8

Page 121: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 120 - de 137

tic_roda++; if (tic_roda==7) //Si final de volta tic_roda=0; //Reiniciem comptador PORTBbits.RB14=1; //Data=1 else PORTBbits.RB14=0; //Sino, Data=0 PORTBbits.RB15=1; //RB15 a 1 flag=0; //Es reinicia el flag else PORTBbits.RB15=0; //RB15 a 0 flag=1; //S'activa el flag IFS0bits.T1IF=0; //Es baixa el flag d'interrupció /*------------------------------------------------- --------------------- RSI fi de mostreig - conversió 1. Càlcul de nova consigna d'acceleració 2. Activació de frenada 3. Càlcul de direcció A cada interrupció es farà un dels càlculs, canvi ant el canal per a la següent entrada a la interrupció. --------------------------------------------------- --------------------*/ void __attribute__ ((__interrupt__)) _ADC1Interrupt( void ) int increment_ac=0; int increment_fr=0; int Duty_Cicle=0; if (AD1CHS==0x0000) //Si està seleccionat el canal de l'accelerador ADCValue_ac=ADC1BUF0; //Es guarda el valor del buffer if (ADCValue_ac<=1) //Marge de seguretat per a la //detecció del 0 else increment_ac=0; //Reiniciem increment a 0 increment_ac=ADCValue_ac-ADCValue_ac_Old; //Calculem l'increment del valor del //conversor respecta el valor anterior if (increment_ac<0) //Si l'increment es negatiu accelerant=0; //flag d'acceleració a 0 desaccelerant=1; if (increment_ac>0) //Si és positiu o igual a 0 accelerant=1; //Flag d'acceleració a 1 desaccelerant=0; //Flag de desacceleració a 0

6

Page 122: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 121 - de 137

velocidad=0x3D09-(ADCValue_ac-1)*12; //Calculem la nova consigna de velocitat ADCValue_ac_Old=ADCValue_ac; //Guardem el valor antic //d'acceleració AD1CHS=0x0001; //Es selecciona el Canal 1 else if (AD1CHS==0x0001) //Si Canal 1 seleccionat ADCValue_fr=ADC1BUF0; //Guardem el valor del Buffer if (ADCValue_fr>1) //Marge de seguretat per a la //detecció del 0 increment_fr=0; //Reiniciem increment a 0 increment_fr=ADCValue_fr-ADCValue_fr_Old; //Es calcula l'increment del //conversor respecte el valor

// anterior if (increment_fr>=1) //Si hi ha un increment positiu //s'agafa >1 perque no es freni //per una oscil·lació if (ADCValue_fr<=0x03FF) //Si no se supera el llindar accelerant=0; //Desactiva el flag d'acceleració desaccelerant=0; //Desactiva la desacceleració frenant1=1; //Activa flag de frenada frenada=10; //pendent de frenada else if (increment_fr>=10) frenada=20; //Si increment de fre més gran //més pendent de baixada de velocitat. Duty_Cicle=(ADCValue_fr-1)*40; //càlcul del duty cicle OC1RS=Duty_Cicle; //Càrrega del duty cicle ADCValue_fr_Old=ADCValue_fr; //Es guarda el valor antic //d'acceleració AD1CHS=0x000C; //Seleccionem el Canal 12 else if (AD1CHS==0x000C) //Si Canal 12 seleccionat ADCValue_dir=ADC1BUF0; //Es guarda el valor del buffer if(ADCValue_dir!=ADCValue_dir_Old) //Si el valor és igual que //l'anterior no es fa res //Si es diferent es calcula //com ha de quedar el PORTA //i es carrega el valor

//a enviar al PC. if (0<ADCValue_dir&&ADCValue_dir<0x0071) mostrar_dir=0x0001; PORTA=0b00000000;

Page 123: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 122 - de 137

else if (0x0092<ADCValue_dir&&ADCValue_dir<0x0124) mostrar_dir=0x0002; PORTA=0b00000100; else if (0x0124<ADCValue_dir&&ADCValue_dir<0x01B6) mostrar_dir=0x0003; PORTA=0b00001000; else if (0x01B6<ADCValue_dir&&ADCValue_dir<0x0248) mostrar_dir=0x0004; PORTA=0b00001100; else if (0x0248<ADCValue_dir&&ADCValue_dir<0x02DA) mostrar_dir=0x0005; PORTA=0b00010000; else if (0x02DA<ADCValue_dir&&ADCValue_dir<0x036C) mostrar_dir=0x0006; PORTA=0b00010100; else if (0x036C<ADCValue_dir&&ADCValue_dir<0x03FF) mostrar_dir=0x0007; PORTA=0b00011000; ADCValue_dir_Old=ADCValue_dir; //Es guarda el valor //antic de direcció AD1CHS=0x0000; //Es selecciona el canal 0 IFS0bits.AD1IF=0; //Es baixa el flag d'interrupció //del conversor /*------------------------------------------------- ---------------------- RSI Timer 3 1. Actualització de velocitat (Rampa accelerado i fre) 2. Generació d'intermitents 4. Ordre de nou mostreig-conversió --------------------------------------------------- --------------------*/ void __attribute__ ((__interrupt__)) _T3Interrupt ( void ) tic_desacceleracio++; tic_intermitents++; //Definim comptador de temps per //generació d'intermitents if (!Creuer) //Si creuer desactivat, //consigna accelerador/fre if (accelerant==1) //Si flag d'acceleració activat

7

Page 124: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 123 - de 137

if (velocidad2>velocidad) //Si encara no

//s'ha arribat a la consigna

velocidad2=velocidad2-1; //Es decrementa la compta del PR1 IEC0bits.T1IE=0; //inhibim interrupcions de Timer1

PR1=velocidad2; //Es carrega la nova compta IEC0bits.T1IE=1; //Desinhibim interrupcions Timer1 else accelerant=0; if (tic_desacceleracio==5&&desaccelerant==1) if (velocidad2<velocidad) velocidad2=velocidad2+1; IEC0bits.T1IE=0; //inhibim interrupcions de Timer1 PR1=velocidad2; //Es carrega la nova compta IEC0bits.T1IE=1; //Desinhibim interrupcions Timer1 else desaccelerant=0; if (frenant1==1&&accelerant==0) //Si flag de frenada activat if (velocidad2<velocidad) //Si la compta és més gran que //la última calculada d'acceleració velocidad2=velocidad2+frenada; //Es calcula la nova

//compta de PR1 IEC0bits.T1IE=0; //inhibim interrupcions de Timer1 PR1=velocidad2; //Es carrega la nova compta IEC0bits.T1IE=1; //desinhibim interrupcions Timer1 else frenant1=0; //si s'arriba a la velocitat //última calculada //baixem el flag de fre else //Si creuer activat, //consigna de velocitat de creuer if (velocidad2>velocitat_creuer) velocidad2=velocidad2-1; IEC0bits.T1IE=0; //inhibim interrupcions de Timer1 PR1=velocidad2; //Es carrega la nova compta IEC0bits.T1IE=1; //Desinhibim interrupcions Timer1 if (velocidad2<velocitat_creuer) frenada=1; velocidad2=velocidad2+frenada; IEC0bits.T1IE=0; PR1=velocidad2; IEC0bits.T1IE=1; /*^------------------------ Generació intermitents

Page 125: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 124 - de 137

--------------------------*/ //ENCESA if (tic_intermitents==4000) //han passat 4 ms if (intermitents&&intermitent_dret) //Si intermitents activats //i intermitent dret activat PORTBbits.RB10=1; //Activació del pin corresponent if (intermitents&&intermitent_esquerre) //Si intermitents activats //i intermitent esquerre activat PORTBbits.RB11=1; //Activació del pin corresponent //APAGADA else if (tic_intermitents==8000) //Han passat 8 ms tic_intermitents=0; //Es reinicia el comptador if (intermitents&&intermitent_dret) //Si intermitents activats //i intermitents dret activat PORTBbits.RB10=0; //desactivació del pin corresponent if (intermitents&&intermitent_esquerre) PORTBbits.RB11=0; //desactivació del pin corresponent if (tic_enviar==1000) mostrar_velocidad(); //cada 100 ms enviem al PC if (AD1CON1bits.DONE) //Si s'ha acabat conversió anterior AD1CON1bits.SAMP = 1; //Ordre de nou mostreig-conversió IFS0bits.T3IF=0; //Es baixa el flag d'interrupcio de //Timer3 /*------------------------------------------------- ---------------------- RSI Interrupció externa 1 Activació i desactivació d'intermitent dret --------------------------------------------------- --------------------*/ void __attribute__ ((__interrupt__)) _INT1Interrupt ( void ) pols1++;; //S'incrementa el comptador de polsos if (pols1==1) //Si és el primer pols intermitents=1; //Activació d'intermitents intermitent_dret=1; //Activació d'intermitent dret intermitent_esquerre=0; //Es desactiva l'intermitent esquerre PORTBbits.RB11=0; //es força un 0 al pin de

13

Page 126: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 125 - de 137

//l'intermitent esquerre if (pols1==2) //Si és el segon pols pols1=0; //Es reinicia el comptador de polsos intermitents=0; //Desactivació d'intermitents intermitent_esquerre=0; //Es desactiva l'intermitent esquerre intermitent_dret=0; //desactiva l'intermitent dret PORTBbits.RB10=0; //Apaga l'intermitent esquerre IFS1bits.INT1IF=0; //Es baixa el flag d'interrupció //de l'INT1 /*------------------------------------------------- ---------------------- RSI Interrupció externa 1 Activació i desactivació d'intermitent esquerre --------------------------------------------------- --------------------*/ void __attribute__ ((__interrupt__)) _INT2Interrupt ( void ) pols2++;; //S'incrementa el comptador de polsos if (pols2==1) //Si és el primer pols intermitents=1; //Activació d'intermitents intermitent_esquerre=1; //Activació d'intermitent esquerre intermitent_dret=0; //Es desactiva l'intermitent dret PORTBbits.RB10=0; //Es força un 0 al pin de //l'intermitent dret if (pols2==2) //Si és el segon pols pols2=0; //Es reinicia el comptador de polsos intermitents=0; //Desactivació d'intermitents intermitent_esquerre=0; //Es desactiva l'intermitent esquerre intermitent_dret=0; //Es desactiva l'intermitent dret PORTBbits.RB11=0; //Apaga l'intermitent esquerre IFS1bits.INT2IF=0; //Es baixa el flag d'interrupció //De l'INT2 /*------------------------------------------------- ---------------------- RUTINA d'enviament de dades al PC i LCD 1. Adaptació de rang de velocitat 2. enviament de velocitat 3. Enviament de direcció --------------------------------------------------- --------------------*/ void mostrar_velocidad() if (inici_com==1) enviar_direccio=1; //Es permet la tramesa de la direccio //a la rutina d'interrupcio de TRX. mostrar_vel=(0x3D09-velocidad2)/12; //Es calcula la velocitat en //unidats d'AD mostrar_vel=mostrar_vel/5; //Es converteix a km/h while (U1STAbits.UTXBF); //Esperar que el buffer estigui buit //i poguem escriure un byte

12

18

Page 127: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 126 - de 137

U1TXREG=mostrar_vel; //S'escriu al registre de transmissió //la dada de velocitat. //Quan es trameti saltarà la //interrupció de transmissió //que enviarà la segona dada //PROGRAMA PRINCIPAL void main () int pols_creuer=0; U1TXREG=0x0000; AD_ini(); //Inicialització A/D RB_config(); //Inicialització PORTA i B inicialitzacio_LEDs(); INT2_ini(); //Inicialització INT1 INT1_ini(); //Inicialització INT2 Timer1_Ini (); //Inicialització Timer1 Timer3_Ini(); //Inicialització Timer2 UART_ini(); //Inicialització UART1 habilitar_Interrupcions(); //Habilitació d'interrupcions AD1CON1bits.ADON = 1; // HAbilitació A/D while (1) //GESTIÓ VELOCITAT DE CREUER if (PORTBbits.RB4==1&&anterior==0) //Si vel.cr.+ pols_creuer++; //sumem polsos anterior=1;

Creuer=1; //activació flag creuer if (pols_creuer>7) //si pols > màxims pols_creuer=7; //Mantenim consigna màxima velocitat_creuer=0x2CA1+pols_creuer*258; //calcul consigna if (PORTBbits.RB5==1&&anterior2==0) //Si vel.cr.- anterior2=1; if (Creuer==1) //Si flag creuer activat velocitat_creuer=velocitat_creuer-258; //calcul consigna if (velocitat_creuer<=0x2CA1) //Si valor consigna cr. mín. velocitat_creuer=0x2CA1; //vel.cr. mínima if (PORTBbits.RB4==1&&PORTBbits.RB5==1) //Si 2 polsadors alhora Creuer=0; //acceleració i fre normals if (PORTBbits.RB4==0) anterior=0; if (PORTBbits.RB15==0)anterior2=0;

1

Page 128: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 127 - de 137

7.5 Codi Font Interfície PC.

7.5.1 Vehicle.cpp /*------------------------------------------------- ---------------------- PROGRAMA VEHICLE.EXE Josep Escoda Nolla Tarragona, 2008 PLATAFORMA DEMOSTRADORA D'AUTOMÒBIL BASADA EN MICROCONTROLADOR INTERFÍCIE DE COMUNICACIÓ ENTRE PIC24FJ64GA002 I PC MITJANÇANT RS232 --------------------------------------------------- --------------------*/ #include <vcl.h> #include <windows.h> #include <assert.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <iostream.h> #pragma hdrstop #include "com_serie.h" //------------------------------------------------- ---------------------- #pragma package(smart_init) #pragma link "PERFGRAP" #pragma resource "*.dfm" TForm1 *Form1; TShape *Shape1; TShape *Shape2; TShape *Shape3; TShape *Shape4; TShape *Shape5; TShape *Shape6; TShape *Shape7; int status; char *com; bool state=0; bool enviat; bool rebut; HANDLE hcomport=NULL; DCB dcb; COMMTIMEOUTS sTimOut; OVERLAPPED event; int Dato=0x0001; int Dato1=0x0002; int Dato2=0x0003; int Dato3=0x0000; int velocitat=0; int direccio=0; int direccio_old=0; bool Gir=0; int pols1=0; int velocitat_creuer=0; int error=0; int inici_com=0x70; char interm_update [4];

Page 129: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 128 - de 137

DWORD iBytesWritten=0; DWORD dwBytesTransferred=0; //------------------------------------------------- ---------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) //------------------------------------------------- ---------------------- void __fastcall TForm1::Button1Click(TObject *Sende r) enviat=WriteFile(hcomport,&Dato1,1,&iBytesW ritten,&event); if(enviat==1) Shape10->Brush->Color=clWhite; Gir=1; Timer2->Enabled=1; //------------------------------------------------- ---------------------- void __fastcall TForm1::Button3Click(TObject *Sende r) enviat=WriteFile(hcomport,&Dato,1,&iBytesWr itten,&event); if(enviat==1) Shape9->Brush->Color=clWhite; Gir=0; Timer2->Enabled=True; //------------------------------------------------- ---------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender ) rebut=ReadFile(hcomport, &Dato3, 2, &dwBytesTran sferred,&event); velocitat=Dato3&0x00FF; direccio= Dato3&0xFF00; sprintf(interm_update,"%d",Dato3); Edit1->Text=velocitat; PerformanceGraph1->DataPoint(clRed, velocitat); PerformanceGraph1->Update(); if (0<velocitat&&velocitat<=25) Shape18->Brush->Color=clLim e; Shape19->Brush->Color=clWhi te; Shape20->Brush->Color=clWhi te; Shape21->Brush->Color=clWhi te; Shape22->Brush->Color=clWhi te; Shape23->Brush->Color=clWhi te; Shape24->Brush->Color=clWhi te; Shape25->Brush->Color=clWhi te; else if (26<velocitat&&velocitat<=5 0) Shape18->Brush->Color=clLim e; Shape19->Brush->Color=clLim e; Shape20->Brush->Color=clWhi te; Shape21->Brush->Color=clWhi te;

Page 130: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 129 - de 137

Shape22->Brush->Color=clWhi te; Shape23->Brush->Color=clWhi te; Shape24->Brush->Color=clWhi te; Shape25->Brush->Color=clWhi te; else if (50<velocitat&&velocitat<=7 5) Shape18->Brush->Color=clLim e; Shape19->Brush->Color=clLim e; Shape20->Brush->Color=clLim e; Shape21->Brush->Color=clWhi te; Shape22->Brush->Color=clWhi te; Shape23->Brush->Color=clWhi te; Shape24->Brush->Color=clWhi te; Shape25->Brush->Color=clWhi te; else if (75<velocitat&&velocitat<=1 00) Shape18->Brush->Color=clLim e; Shape19->Brush->Color=clLim e; Shape20->Brush->Color=clLim e; Shape21->Brush->Color=clYel low; Shape22->Brush->Color=clWhi te; Shape23->Brush->Color=clWhi te; Shape24->Brush->Color=clWhi te; Shape25->Brush->Color=clWhi te; else if (100<velocitat&&velocitat<= 125) Shape18->Brush->Color=clLim e; Shape19->Brush->Color=clLim e; Shape20->Brush->Color=clLim e; Shape21->Brush->Color=clYel low; Shape22->Brush->Color=clYel low; Shape23->Brush->Color=clWhi te; Shape24->Brush->Color=clWhi te; Shape25->Brush->Color=clWhi te; else if (125<velocitat&&velocitat<= 150) Shape18->Brush->Color=clLim e; Shape19->Brush->Color=clLim e; Shape20->Brush->Color=clLim e; Shape21->Brush->Color=clYel low; Shape22->Brush->Color=clYel low; Shape23->Brush->Color=clYel low; Shape24->Brush->Color=clWhi te; Shape25->Brush->Color=clWhi te; else if (150<velocitat&&velocitat<= 175) Shape18->Brush->Color=clLim e; Shape19->Brush->Color=clLim e; Shape20->Brush->Color=clLim e; Shape21->Brush->Color=clYel low; Shape22->Brush->Color=clYel low; Shape23->Brush->Color=clYel low; Shape24->Brush->Color=clRed ; Shape25->Brush->Color=clWhi te; else if (velocitat>=175) Shape18->Brush->Color=clLim e;

Page 131: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 130 - de 137

Shape19->Brush->Color=clLim e; Shape20->Brush->Color=clLim e; Shape21->Brush->Color=clYel low; Shape22->Brush->Color=clYel low; Shape23->Brush->Color=clYel low; Shape24->Brush->Color=clRed ; Shape25->Brush->Color=clRed ; switch(direccio) case 0x0001: Shape1->Brush->Colo r=clRed; Shape2->Brush->Colo r=clLime; Shape3->Brush->Colo r=clLime; Shape4->Brush->Colo r=clLime; Shape5->Brush->Colo r=clLime; Shape6->Brush->Colo r=clLime; Shape7->Brush->Colo r=clLime; break; case 0x0002: Shape1->Brush->Colo r=clLime; Shape2->Brush->Colo r=clRed; Shape3->Brush->Colo r=clLime; Shape4->Brush->Colo r=clLime; Shape5->Brush->Colo r=clLime; Shape6->Brush->Colo r=clLime; Shape7->Brush->Colo r=clLime; break; case 0x0003: Shape1->Brush->Colo r=clLime; Shape2->Brush->Colo r=clLime; Shape3->Brush->Colo r=clRed; Shape4->Brush->Colo r=clLime; Shape5->Brush->Colo r=clLime; Shape6->Brush->Colo r=clLime; Shape7->Brush->Colo r=clLime; break; case 0x0004: Shape1->Brush->Colo r=clLime; Shape2->Brush->Colo r=clLime; Shape3->Brush->Colo r=clLime; Shape4->Brush->Colo r=clRed; Shape5->Brush->Colo r=clLime; Shape6->Brush->Colo r=clLime; Shape7->Brush->Colo r=clLime; break; case 0x0005: Shape1->Brush->Colo r=clLime; Shape2->Brush->Colo r=clLime; Shape3->Brush->Colo r=clLime; Shape4->Brush->Colo r=clLime; Shape5->Brush->Colo r=clRed; Shape6->Brush->Colo r=clLime; Shape7->Brush->Colo r=clLime; break; case 0x0006: Shape1->Brush->Colo r=clLime; Shape2->Brush->Colo r=clLime; Shape3->Brush->Colo r=clLime; Shape4->Brush->Colo r=clLime;

Page 132: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 131 - de 137

Shape5->Brush->Colo r=clLime; Shape6->Brush->Colo r=clRed; Shape7->Brush->Colo r=clLime; break; case 0x0007: Shape1->Brush->Colo r=clLime; Shape2->Brush->Colo r=clLime; Shape3->Brush->Colo r=clLime; Shape4->Brush->Colo r=clLime; Shape5->Brush->Colo r=clLime; Shape6->Brush->Colo r=clLime; Shape7->Brush->Colo r=clRed; //------------------------------------------------- --------------------- void __fastcall TForm1::connectar1Click(TObject *Se nder) exit(status); //------------------------------------------------- ---------------------- void __fastcall TForm1::Connectar2Click(TObject *Se nder) hcomport=CreateFile(com,GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0); if(hcomport==INVALID_HANDLE_VALUE) if (com!=0) ShowMessage("No es pot obri r el port"); Memo1->Lines->Add("Connexió inhabilitada"); Shape12->Brush->Color=clRed ; else ShowMessage("No ha seleccio nat cap port"); Shape12->Brush->Color=clRed ; else Memo1->Lines->Add("Connexió habilitada"); Shape12->Brush->Color=clLime; if (!GetCommState(hcomport,&dcb)) ShowMessage("no es pot veure l'esta t del port"); //canvi configuració port serie dcb.BaudRate=CBR_9600; //B aud rate 9600 bauds dcb.ByteSize=8; //t amany de 8 bits dcb.Parity=NOPARITY; //s ense paritat dcb.StopBits=ONESTOPBIT; //U n bit d'stop dcb.fRtsControl=RTS_CONTROL_TOGGLE; //h abilitació línia RTS

Page 133: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 132 - de 137

dcb.fDtrControl=DTR_CONTROL_DISABLE; //H abilitació línia DTR //càrrega de configuració if (!SetCommState(hcomport,&dcb)) ShowMessage("no es pot configurar e l port"); //Activació event de lectura if(!SetCommMask(hcomport, EV_RXCHAR)) ShowMessage("No s'ha pogut activar l'eve nt de lectura."); //Configuració tamany dels buffers RX i TX if(!SetupComm(hcomport,1024,1024)); ShowMessage("No s'ha pogut carregar el t amany dels buffers."); //Configuració dels temps sTimOut.ReadIntervalTimeout=MAXDWORD; sTimOut.ReadTotalTimeoutMultiplier=0; sTimOut.ReadTotalTimeoutConstant=0; sTimOut.WriteTotalTimeoutMultiplier=0; sTimOut.WriteTotalTimeoutConstant=0; if(!SetCommTimeouts(hcomport,&sTimOut)) ShowMessage("No s'han pogut escriure el s temps del port"); //Neteja dels bufers RXi TX if(!PurgeComm(hcomport, PURGE_TXCLEAR|PURGE_RXC LEAR) ShowMessage("No s'ha pogut netejar els buff ers"); //Creacion de evento event.hEvent=CreateEvent(NULL, FALSE, FALSE, NULL); event.Offset=NULL; event.OffsetHigh=NULL; assert(event.hEvent); //------------------------------------------------- ---------------------- void __fastcall TForm1::Desconnectar1Click(TObject *Sender) CloseHandle(hcomport); ShowMessage("Comunicació inhabilitada"); //------------------------------------------------- ---------------------- void __fastcall TForm1::RadioButton1Click(TObject * Sender)

Page 134: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 133 - de 137

com="COM1"; //------------------------------------------------- ---------------------- void __fastcall TForm1::RadioButton2Click(TObject * Sender) com="COM2"; //------------------------------------------------- ---------------------- void __fastcall TForm1::RadioButton3Click(TObject * Sender) com="COM3"; //------------------------------------------------- ---------------------- void __fastcall TForm1::RadioButton4Click(TObject * Sender) com="COM4"; //------------------------------------------------- ---------------------- void __fastcall TForm1::Shape12MouseDown(TObject *S ender, TMouseButton Button, TShiftState Shift, int X , int Y) if (Shape12->Brush->Color==clRed) Shape12->Brush->Color=clLime; Connectar2->Click(); else Shape12->Brush->Color=clRed; Desconnectar1->Click(); //------------------------------------------------- ---------------------- void __fastcall TForm1::Timer2Timer(TObject *Sender ) if (Gir==1) if (Shape9->Brush->Color==clWhite) Shape9->Brush->Color=clYell ow; else if (Shape9->Brush->Color==clYe llow) Shape9->Brush->Color=clWhit e; else if (Shape10->Brush->Color==clWhite)

Page 135: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 134 - de 137

Shape10->Brush->Color=clYel low; else if (Shape10->Brush->Color==clY ellow) Shape10->Brush->Color=clWhi te; //------------------------------------------------- ---------------------- void __fastcall TForm1::FormCreate(TObject *Sender) Timer2->Enabled=False; PerformanceGraph1->Enabled=True; //------------------------------------------------- ---------------------- void __fastcall TForm1::Button2Click(TObject *Sende r) enviat=WriteFile(hcomport,&Dato2,1,&iBytesW ritten,&event); Timer2->Enabled=False; Shape9->Brush->Color=clWhite; Shape10->Brush->Color=clWhite; //------------------------------------------------- ---------------------- void __fastcall TForm1::Button4Click(TObject *Sende r) pols1++; if (pols1>=7) pols1=7; switch (pols1) case 1: velocitat_creuer=0x08; //80 km/h break; case 2: velocitat_creuer=0x09; //90 km/h break; case 3: velocitat_creuer=0x10; //100 km/h break; case 4: velocitat_creuer=0x20; //110km/h break; case 5: velocitat_creuer=0x30; //120 km/h break; case 6: velocitat_creuer=0x40; //130km/h break; case 7: velocitat_creuer=0x50; //140km/h break; enviat=WriteFile(hcomport,&velocitat_creuer,1,&iByt esWritten,&event); if(enviat==1) Memo1->Lines->Add("consigna creuer env iada");

Page 136: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 135 - de 137

//------------------------------------------------- ---------------------- void __fastcall TForm1::Button5Click(TObject *Sende r) pols1--; if (pols1<=1) pols1=1; switch (pols1) case 1: velocitat_creuer=0x08; //80 km/h break; case 2: velocitat_creuer=0x09; //90 km/h break; case 3: velocitat_creuer=0x10; //100 km/h break; case 4: velocitat_creuer=0x20; //110km/h break; case 5: velocitat_creuer=0x30; //120 km/h break; case 6: velocitat_creuer=0x40; //130km/h break; case 7: velocitat_creuer=0x50; //140km/h break; enviat=WriteFile(hcomport,&velocitat_creuer,1,&iByt esWritten,&event); if(enviat==1) Memo1->Lines->Add("Consigna creuer enviada"); //------------------------------------------------- ---------------------- void __fastcall TForm1::Button6Click(TObject *Sende r) if(inici_com==0x60) inici_com=0x70; enviat=WriteFile(hcomport,&inici_com,1,&iBytesWritt en,&event); if(enviat==TRUE) Memo1->Lines->Add("Visuali tzació aturada"); else if (inici_com==0x70) inici_com=0x60;

Page 137: Plataforma Demostradora d’Automòbil Basada en ...sauron.etse.urv.es/public/PROPOSTES/pub/pdf/1233pub.pdf · gestió de dades un microcontrolador. S’utilitzaran diferents funcions

7. Annexes

Pàgina - 136 - de 137

enviat=WriteFile(hcomport,&inici_com,1,&iBytesWritt en,&event); if(enviat==FALSE) Memo1->Lines->Add("No s'ha inici at la visualització"); else Memo1->Lines->Add("Visualització iniciada"); //------------------------------------------------- ----------------------