CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf ·...

102
PROJECTE FINAL DE CARRERA URV. CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA El projecte en qüestió detalla la implementació d’un sistema de control de temperatura, amb un microcontrolador ( PIC 16F877 ), per als sensors “de capa gruixuda”, utilitzats en la Universitat Rovira i Virgili per a la detecció de gasos. Titulació: Enginyeria Tècnica Industrial en Electrònica Industrial Alumne: Joaquim Solé Figueras Tutor: Eduard Llobet Valero 21 d’Abril de 2005

Transcript of CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf ·...

Page 1: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PROJECTE FINAL DE CARRERA URV.

CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

El projecte en qüestió detalla la implementació d’un sistema de control de temperatura, amb un microcontrolador ( PIC 16F877 ), per als sensors “de capa gruixuda”, utilitzats en la Universitat Rovira i Virgili per a la detecció de gasos.

Titulació: Enginyeria Tècnica Industrial en Electrònica Industrial

Alumne: Joaquim Solé Figueras

Tutor: Eduard Llobet Valero

21 d’Abril de 2005

Page 2: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

ÍNDEX DE CONTINGUTS

1. OBJECTIU 2. ANTECEDENTS

PROPOSTES DE DISSENY

- Mètode d’escalfament dels sensors. - Control de temperatura basat en un sistema analògic. - Control de temperatura governat per un microcontrolador.

3. ESPECIFICACIONS

- Anàlisi dels sensors a controlar. o Inèrcia de la temperatura en l’element calefactor o Lectura de temperatures segons l’excitació o Ruptura del sensor

- Precisió del controlador - Àmbit d'us del controlador - Quantitat de sensors a controlar - Disponibilitat de fonts d'excitació.

4. ANALISI DE SOLUCIONS

- Anàlisis del paràmetre a controlar - Elecció del microcontrolador a utilitzar - Mètode i fórmules de control. - Estabilitat del control. - Llenguatge de programació per al microcontrolador. - Sistema d'excitació dels sensors. - Entorn de control i interfície amb l'usuari.

5. RESULTATS FINALS / IMPLEMENTACIÓ FÓRMULES I CÀLCULS

- Eines de programació i “debuggatge”. - Adaptació de la fórmula escollida per al càlcul en el microcontrolador.

Page 3: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

DISSENY HARDWARE

- Descripció del microcontrolador utilitzat. - Sistema i cirquiteria de control. - Variables de control i de sensat.

o Adaptació de la senyal § Adaptació del corrent § Adaptació de la tensió

- Excitació amb senyal PWM - Entrades analògiques - Implementació de la PCB ( Placa de circuit imprès )

DISSENY SOFTWARE

- Eines de programació i “debuggatge”. - Descripció del sistema de control . Etapes

o Inicialització de variables i configuració o Conversions A/D

§ Lectures de VS § Lectures de VR § Detecció de ruptura sensor o circuit obert per software

o Execució d’instruccions rebudes pel port sèrie. - Configuració de la senyal PWM en el Microcontrolador. - Reordenar Duty-Cycle per adaptar a registres interns

o Interrupcions § INT Rsrec

- Filtrat de les senyals d'entrada analògiques - Comunicació via RS232 amb el PC. - Software de control del PC.

ANÀLISIS AL LABORATORI

- Ruptura dels sensors - Mesures reals de temperatura

6. PROPOSTES DE MILLORA

- Excitació lineal del sensor - Limitació del “duty-cycle” de la senyal PWM per hardware - Limitació del corrent màxim - Temps d’actuació variable respecte a la temperatura.

Page 4: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

7.ANNEXES

- CODI ENSAMBLADOR PER AL MICROCONTROLADOR - MANUAL D’USUARI DEL SOFTWARE DE CONTROL DE

TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS.

- CODI DEL PROGRAMA DE CONTROL PER AL PC ( VISUAL BASIC ). 8. REFERÈNCIES BIBLIOGRÀFIQUES ENLLAÇOS D'INTERNET

Page 5: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

1

1. OBJECTIU Actualment la Universitat Rovira i Virgili està investigant les aplicacions d'una eina que es va dissenyar per a la detecció de gasos. El meu projecte té com a objectiu desenvolupar un sistema de control de temperatura per a la eina mencionada, donat que els sensors utilitzats són molt sensibles als canvis de temperatura i a més el seu rendiment va fortament lligat amb aquest paràmetre. El tipus de sensors que es volen controlar són els anomenats “gruixuts”. Així doncs el disseny del sistema de control s’ha de cenyir a les característiques dels sensors esmentats. L’anàlisi d’aquestes característiques es descriu en l’apartat “Especificacions”. 2.ANTECEDENTS PROPOSTES DE DISSENY Mètode d’escalfament dels sensors Els sensors “gruixuts” esmentats estan fabricats sobre un substrat d’Alúmina de 1,3 mm amb un circuit imprès de platí en el revers. Aquest circuit té una secció i una longitud determinada i actua com un element resistiu al pas del corrent. Tota resistència ve determinada per la següent equació: Resistència = ρ × L/S S = secció del conductor. L = longitud del conductor. ρ = coeficient de resistivitat del platí ( 0,00392 1/ºC ) Al igual que una resistència comercial, la potència disposada en el bipol es desprèn en forma de calor, augmentant la seva temperatura i la dels elements que l’envolten. D’aquesta manera al aplicar una tensió en extrems del circuit de platí fem circular un corrent a través seu, relatiu a la tensió aplicada i la resistència elèctrica que oposa el circuit. El producte Tensió instantània i corrent instantani ens donarà la potència instantània dissipada en el circuit que determinarà la temperatura del mateix. La geometria que descriu el circuit és una “ziga-zaga”, per tal de distribuir de la forma més uniforme el calor dissipat. Així doncs el sistema de control a implementar ha d’actuar sobre el paràmetre tensió (diferència de potencial elèctric) en extrems del circuit de platí per tal de modelar la temperatura del mateix.

Page 6: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

2

Control de temperatura basat en un sistema analògic.

La proposta de realitzar un sistema de control de temperatura dona molta llibertat en quant al tipus de control que es vol realitzar, donat que la temperatura és un paràmetre amb molta inèrcia i per tant no precisa un temps de reacció gaire elevat.

Els avantatges més importants que aporta un sistema analògic és la rapidesa del control i la qualitat d'aquest.

Aquest es el més adequat per a sistemes molt senzills, ja que proporciona una gran rapidesa, baix consum, baix cost i gran qualitat. Control de temperatura governat per un microcontrolador. Un sistema de control governat per un microcontrolador, té la principal limitació de la velocitat de reacció. Però per altra banda, ens ofereix una gran flexibilitat en el control i un entorn més amigable per al usuari. Sabem que un control amb microcontrolador es un sistema de control digital.

Les característiques més importants d'un control digital són les següents: Potencial: no existeix limitació en quant a la complexitat del sistema a controlar, cosa que si existeix en sistemes analògics. Flexibilitat: Facilita el seu ajust i canvi. Pel mateix motiu anterior un canvi en un control analògic implica, en major part dels casos, un canvi en els components o fins i tot un canvi del controlador complet. Precisió: exactitud i estabilitat en el càlcul ja que no existeixen derives o altres fonts d'error (sempre i quan disposem d'una lectura correcte de la senyal ) . Versatilitat: Permet interactuar amb altres aplicacions com ara la adquisició de dades, alarmes, actuació sobre altres dispositius... Aquest punt anteriorment citat és potser el que ha fet que en els últims anys s'hagi optat per controls digitals ja que permet la centralització de múltiples sistemes i un control jerarquitzat.

Figura 2.1. Versatilitat d’un sistema digital amb microcontrolador.

El procés en la majoria dels casos és continu, és a dir s'ha d'excitar amb una senyal contínua i genera una sortida contínua. Aquesta senyal , igual que qualsevol llaç de

Page 7: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

3

control, és llegida per algun dispositiu, que a la vegada genera una senyal contínua proporcional a la magnitud mesurada. Per altra banda existeix el microcontrolador que només treballa amb valors discrets.

Figura 2.2. Diagrama de flux d’un llaç de control digital.

Així doncs, podem deduir que un control discret es pot aproximar a un sistema continu si s'utilitzen temps de lectura molt petits.

Per altra banda un sistema de control digital amb microcontrolador també presenta els seus inconvenients:

Complexitat: També es necessari implementar un software complicat i el hardware de control complex per a controlar sistemes senzills.. Pèrdua d'informació: No existeix control durant dues mostres consecutives; procés de conversió : lectura , retenció i quantificar Consum: Excessiu per a controls simples. Preu: generalment és més car que els reguladors continus. Tot i que cada cop surten al mercat microcontroladors que ofereixen més prestacions a més baix preu, per tant deixa de ser un gran desavantatge. Per naturalesa tots el processos són continus en el temps, per tant s'han de convertir totes les senyals al camp digital, si es volen tractar amb un sistema digital.

Page 8: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

4

3.ESPECIFICACIONS Anàlisi dels sensors a controlar. El sistema de control ha de regular la diferència de potencial elèctric en extrems de l’element calefactor amb l'objectiu de modelar la seva temperatura. Els sensors que es pretenen utilitzar estan fabricats al propi departament de la universitat. El substrat dels sensors és d’Alúmina i disposen d'una resistència de platí al revers del sensor que actua d'element calefactor. En l’apartat “Mètode d’escalfament dels sensors” s’explica la relació de la temperatura amb la tensió d’excitació. S’han realitzat una sèrie de proves al laboratori per tal de caracteritzar el comportament dels sensors: Inèrcia de la temperatura en l’element calefactor

S’ha realitzat un test per determinar el temps necessari d’adaptació de la temperatura entre dos estats estables. Es defineixen els següents estats:

E1 : amb una excitació del element calefactor en tensió equivalent a 1,04 V constant, estabilitzat a una temperatura de 96º C. E2 : amb una excitació de 3,76V. ( s’avaluarà la temperatura estable a la que arriba i el temps necessari per arribar-hi ). El gràfic mostra el comportament de temperatura respecte l’excitació en tensió:

Partint de l’estat E1, s’ha canviat la consigna de tensió en T1 a 3,76 V i s’ha esperat a que el sistema assoleixi un valor de temperatura constant en T2. El valor de temperatura en T2 és de 236ºC i el temps d’estabilització de 1’30 minuts.

Figura 3.1: Gràfic d’adaptació de la temperatura a la consigna de tensió.

Page 9: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

5

Lectura de temperatures segons l’excitació Per determinar les característiques resistives i el punt de ruptura del sensor s' ha anat excitant amb una font de tensió a intervals d'un volt i anotant els valors de corrent que circulen per la resistència calefactor de platí en cada increment. El circuit de mesura segueix l'esquema següent:

Figura 3.2: Esquema del circuit de mesura. S'ha aplicat una rampa uniforme de tensió 1V cada 1,30 minuts.. El recull de les dades es fa seguidament: Taula 3.3: Correspondència de Temperatura i corrent amb el valor de tensió en extrems de la resistència calefactora.

V[mV] I[mA] Temp (ºC) 0 0 20

1000 40 21 2000 114 29 3000 230 48 4000 290 75 5000 340 98 6000 380 128 7000 410 158 8000 440 191 9000 470 215

10000 490 243 11000 520 272 12000 540 301 13000 560 333 14000 580 358 15000 590 386 16000 600 420 17000 620 449 18000 640 478 19000 650 507 20000

La ruptura del sensor s'ha produït a 520º C , corresponent a un corrent en aquest moment de 0,66 A i un voltatge de 19,5 V Cal remarcar que els valors de temperatura superiors a 450ºC no han estat mesurats sinó estimats ja que el termòmetre amb el qual es van prendre les mesures està limitat a 405ºC.

Page 10: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

6

Ruptura del sensor Una propietat que es desprèn dels assaigs realitzats és que el sensor aguanta major temperatura si la rampa d'excitació en tensió respecte el temps té una pendent menor. I l’explicació teòrica d’aquest comportament és la següent: El trencament del sensor és degut al pas excessiu de corrent a través del circuit de platí. La resistència elèctrica del platí té un coeficient positiu. Això significa que quan la temperatura s’eleva la resistència també augmenta. Però tant la temperatura com el valor d’aquesta resistència elèctrica tenen una gran inèrcia. Si al incrementar la tensió d’excitació ho fem sense deixar que la temperatura augmenti i s’estabilitzi, la resistència elèctrica no té temps d’augmentar el suficient per a frenar el pas del corrent, i aquest s’eleva desmesuradament fins al punt de produir el trencament del sensor. Aquesta observació és clau per determinar el tipus de control que s'haurà de fer sobre els sensors, donat que jugarem en temperatures elevades, amb corrents propers al de trencament. Els assaigs sobre els sensors són el primer pas per a determinar el tipus de control i els valors d'excitació necessaris. Precisió del controlador En un primer moment es pretén controlar la temperatura dels sensors amb un error màxim d’1 ºC. Aquest paràmetre determinarà la precisió del controlador en el disseny final. Àmbit d'us del controlador

L'aparell que es pretén dissenyar haurà de treballar en un laboratori i ser manipulat per persones amb coneixements d'electrònica.

L'objectiu no és fer una eina comercial, és a dir que temes com el cost de fabricació la robustes de l'aparell i les prevencions mecàniques no són cap prioritat.

Ens decantarem cap a un disseny flexible, ampliable i amb un entorn complet per tal de que sigui adaptable a diferents tipus de sensors.

Els sensors que integren el l'element calefactor estan dins una camera, per tant les interferències de temperatura externes seran casi despreciables, això permet que et control no requereixi una gran velocitat d'adaptació per contrarestar aquests efectes.

Quantitat de sensors a controlar En un principi l’aparell a dissenyar ha de comptar amb la necessitat d’actuar sobre 8 sensors, ja que la camera utilitzada per a prendre mesures conté aquests vuit sensors en el seu interior treballant paral·lelament.

Page 11: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

7

Cada sensor té unes característiques resistives diferents, degut a les possibles diferències en l’ensamblatge, i no comparteixen un mateix substrat, per tant respondran a un valor diferent de temperatura per la mateixa excitació. Això significa que serà necessari plantejar en un primer moment un control de temperatura independent per cada un d’ells. Disponibilitat de fonts d'excitació. El rang de potència de treball dels sensors ens determina els valors de tensió i corrent necessaris per al sistema de control. En l’apartat “Anàlisis dels sensors a controlar/Lectura de temperatures segons l’excitació ” s’han extret els valors màxims de corrent i tensió necessaris perquè un sensor pugui arribar a la màxima temperatura. Punt de ruptura a 19,5V i 0,66 A. Si considerem el consum de corrent i tensió del sistema de control nul, els requeriments mínims per alimentar vuit sensors són els següents: V ˜ 19’5V ( Si existeix un element passiu que reguli la tensió, com ara un transistor, aquest suposarà una caiguda mínima de 0,7V) I ˜ 8 x 0,66A = 5,28 A ( en el pitjor dels casos “punt de ruptura” ). Per al disseny i proves s’utilitzarà una font d'alimentació de la casa Sylver Electronics, model EP-630, que pot treballar fins a 30V i 2,5 A en DC, ja que disposo d’ella i és suficient per fer les proves. Un cop el sistema estigui implementat i coneguem el consum en corrent i la caiguda de tensió addicional del circuit de control, podrem ajustar els requeriments de potència d’excitació necessaris i escollir o fabricar una font adequada.

Page 12: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

8

4. ANALISI DE SOLUCIONS Anàlisis del paràmetre a controlar El sistema que es pretén dissenyar respon a les següents característiques: Tal com s’ha exposat en l’apartat “Mètode d’escalfament dels sensors”, el paràmetre final a controlar és la Temperatura, però aquest ve determinat per la Tensió (diferència de potencial elèctric) exposada en extrems del circuit de platí. Malgrat que la tensió pot ser modificada amb molta rapidesa, la resposta en Temperatura no és instantània, sinó que presenta una gran inèrcia. Significa que aquells paràmetres que s’utilitzin per mesurar la temperatura també tindran la mateixa inèrcia. Per tant definirem que el nostre sistema de control no té cap necessitat de ser ràpid. Per altra banda, la interacció o monitorització del paràmetre Temperatura pot ser de gran ajuda per la interpretació dels valors mesurats amb els sensors de gasos. Amb l’objectiu de poder discretitzar les lectures errònies degudes a canvis de temperatura. Finalment, contrastant els dos mètodes de control Sistema analògic/Sistema digital s’escolleix el sistema digital ja que els requeriments de control s’assimilen més al perfil d’un sistema digital. Elecció del microcontrolador a utilitzar S’utilitzarà un microcontrolador de la casa Microchip. Aquest fabricant està contribuint molt en el desenvolupament dels microcontroladors i afavoreix el seu ús en l'àmbit estudiantil ja que ofereix el software de programació de forma gratuïta i comparteix per internet els dissenys i fotolits dels circuits programadors. Microchip ofereix una gran quantitat de productes d’aquesta categoria i últimament està especialitzant cada cop més els seus microcontroladors, per tal d’oferir el dispositiu més específic per a cada disseny. D’aquesta manera no es desaprofiten recursos del microcontrolador i podem trobar un micro ideal per a l’aplicació a realitzar. Els preus de venta dels microcontroladors són més elevats que altres fabricants sobretot el preu de venda al públic, però en el nostre cas el preu del micro no ens importa tant ja que no està prevista la fabricació en sèrie del mòdul dissenyat. Per al disseny inicial s’utilitzarà un microcontrolador de la gamma mitja PIC16F877, ja que vaig treballar amb aquest microcontrolador en una assignatura de la Universitat i en tinc els coneixements necessaris i el material per iniciar el disseny. Un cop es coneixen els requeriments del disseny final, Microchip ens ofereix una gran gamma de productes catalogats en una Guia: “Product Selector Guide” que presenta tots els microcontroladors ordenats per requeriments. També podem accedir de forma ràpida en el "buscador" de la pàgina oficial de Microchip (veure referències). La elecció del microcontrolador es basarà en els següents paràmetres:

Page 13: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

9

- Categoria del nostre microcontrolador. Tenim les famílies genèriques

PIC12FXXX, PIC16FXXX i PIC18FXXX correlativament gamma baixa, mitja i alta. També s’ofereixen productes per aplicacions específiques.

- Memòria de Programa. Aquest paràmetre determina la quantitat de codi que es

podrà inserir en el microcontrolador. Molts cops el disseny d’un codi sintetitzat permet la elecció d’un microcontrolador amb menys memòria de programa i per tant més barat.

- Memòria EEPROM. Quantitat de memòria on es disposen variables que han de

ser emmagatzemades malgrat la alimentació del mòdul desapariexi. És a dir memòria no volàtil.

- Memòria RAM. Memòria volàtil on es guarden registres temporals per a

l’execució del codi a temps real.

- Velocitat Màxima en Mhz. La velocitat màxima del micro és un paràmetre que va lligat a la velocitat de resposta del mateix. Aquest paràmetre és bastant determinant en sistemes de control que necessiten un temps màxim de reacció.

Sistema d’excitació dels sensors

El sistema d’excitació es basa en un hardware adequat que transformi la representació digital extreta del microcontrolador (freqüència, codificació binària, PWM etc.,) a tensió en extrems del element calefactor. Una solució ràpida per realitzar aquesta traducció, és utilitzar una senyal PWM ja que és fàcil de manipular en un microcontrolador i ens ofereix una resolució bastant alta en la majoria de casos. Sabent que el sistema calefactor comparteix el mateix substrat que el sensor de gas en qüestió, si l’excitació de la resistència calefactora es realitza amb una senyal PWM és probable que en la lectura del sensor s’observi un soroll sobre la mesura del gas. Així doncs és interessant buscar un tipus d’excitació que sigui lineal per tal d’evitar aquest possible soroll. Però és difícil extreure una expressió lineal de tensió o corrent a partir d’un valor digital. A més la resolució necessària pot complicar molt el hardware actuador. Es pot plantejar la utilització de sortides analògiques que respondran a una codificació digital, o algun dispositiu especial que variï el seu valor de resistència elèctrica en funció a una codificació digital, però la resolució que ofereixen aquests dispositius és realment baixa o un tenen un preu realment car.

Page 14: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

10

Mètode i fórmules de control. Un cop definit el mètode d’escalfament dels sensors ( apartat: “Propostes de disseny”) s’han de definir les necessitats del sistema de control per actuar sobre el paràmetre que modifica la Temperatura i trobar la manera de interpretar o mesurar els nous valors imposats de la mateixa. Per una banda tenim un actuador, governat pel microcontrolador, que seguint un algoritme, influirà en el paràmetre tensió determinant de forma implícita tal com hem descrit anteriorment la temperatura final. Per altra banda el sistema d'adquisició s'encarregarà de traduir la variable analògica temperatura ( o alguna variable que guardi relació amb aquesta) del procés i adaptar-la per a que el micro pugui llegir i interpretar. La idea inicial parteix de la resistència elèctrica del dispositiu calefactor de platí, la qual manté una relació amb la temperatura d'aquest.

El coeficient de resistivitat per al platí és de 0,00392 1/ºC. Aquest paràmetre ens indica que la resistència del material augmenta conforme puja la temperatura d'aquest, característica pròpia de tots el metalls. Podem esmentar que els semiconductors, al contrari dels metalls, baixen la seva resistència conforme augmenta la temperatura. Tenim la següent fórmula que ens relaciona la resistència elèctrica del circuit calefactor i la temperatura:

)(1·(0 TaTactRRact −+= λ

Combinada amb la llei d'Ohm s’extrau la següent fórmula:

)(1·(· 0 TaTactRIsVs −+= λ Variables: Vs = Tensió en extrems de l’element calefactor de platí. Is = Corrent que circula a través de l’element calefactor de platí

R0 = Resistència de l’element calefactor de platí a temperatura ambient ( Ta) λ = Coeficient de temperatura del platí (cte). Tact = Temperatura en temps de la mesura (actual ). Ta = Temperatura ambient. El microcontrolador imposa el paràmetre Vs, a través de l’etapa actuadora. Els paràmetres R0, ? i Ta han de ser constants per al sistema de control. Per tal de deduir Tact ( temperatura actual ) només queda per conèixer la variable Is, que serà llegida per tancar el llaç de control.

Page 15: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

11

Si es desplaça de la fórmula el paràmetre que es vol interpretar queda el següent: Amb les següents constants conegudes: λ = 0’00039 R0 = 10,897 O (mesurada amb un multímetre de precisió). El valor de Ta és determina com una contant definida o pot ser un paràmetre que l’usuari introdueixi en la inicialització del control, però ha de tenir el mateix valor durant tot el procés. Donat que la font d’alimentació no esta incorporada en el disseny inicialment , la tensió aplicada en el element calefactor pot tenir derives, per tant cal també llegir el valor de la tensió Vs ( diferència de potencial elèctric en extrems del element calefactor ) per assegurar que la fórmula treballa amb els valors correctes. Així doncs, tenim dos paràmetres a llegir, Vs i Is que condicionarem i llegirem amb el microcontrolador per lat de deduir el valor de la temperatura del sensor. Si simplifiquem totes les constants del sistema podem extreure la següent fórmula: Amb:

λ·1

10R

K = i TaK +−=λ1

2

La equació que es presenta serà la que s’introduirà en el microcontrolador per al càlcul de la temperatura instantània.

TaRIs

VsTact +−=

λλ1

·· 0

21· KKIsVs

Tact +=

Page 16: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

12

Estabilitat del control El nostre sistema de control treballa amb la informació que retornen les entrades analògiques. Aquestes mesuren el corrent i la tensió del sensor. Aquestes dues variables relacionades sabem que tenen una implicació amb la temperatura que assoleix el material escalfat, ja que la resistència elèctrica del material és un terme que es veu modificat per la temperatura. Ara bé, la inèrcia de reacció que presenta el sistema fa que en alguns casos aquestes relacions implícites deixin de ser reals. La seqüència de resposta és la descrita seguidament:

Tal com es pot observar en el diagrama, si partim d’un estat estable, amb un valor mig de tensió constant, la temperatura del sensor es correspon a un valor de resistència del material R1. Per tant el corrent que circuli pel sensor, que ve determinat per aquest valor de resistència també serà contant.

Però en el moment que s’incrementa la tensió, durant un cert temps es produeix un desequilibri :

La tensió incrementa instantàniament mentre la temperatura del sensor puja lentament i el corrent augmenta en funció de la tensió = cte però la resistència elèctrica de l'element calefactor augmenta lentament. Per tant, durant aquest temps d’inestabilitat, la interpretació de la temperatura a partir de les variables de corrent i tensió no és correcta. Si ens fixem en la fórmula veurem quin serà l’efecte d’aquest desequilibri:

Figura. 4.1 Procés d’adaptació a nova consigna de tensió.

Si definim dos estats consecutius d’estabilitat E0 i E2 on: V0, V1 i V2 és la tensió imposada al sensor, (sense inèrcia) R0, R1 i R2 és la resistència elèctrica de l'element calefactor (amb inèrcia) I0 , I1 i I2 és el corrent que circula a través de la resistència calefactora. (lligada a R)

21· KKIsVs

Tact +=

SIST ESTABLERESISTENCIA R1VS = cte i IS=cte

TEMP = cte

DESEQUILIBRI TEMP (inèrcia)R1 es mantéIncrementa IS

INCREMENT VS

AUGMENTA R1

Decrementa IS

Page 17: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

13

Veurem la progressió que fa Is al llarg de l’adaptació: E0 (estable): la relació és manté. Is = V0/R0 = cte. T1 és constant i es manté mentre no canviïn les condicions ambientals o V. E1(inestable): en aquest estat (suposem un instant després d’haver canviat el valor V0) , V0 és pròpia de la R2 però el valor de resistència com que varia lentament es pot assimilar a R0. Per tant I1 augmenta desmesuradament. I1 = V2/R0 Repercutint en la fórmula del càlcul de temperatura: Tact (1) = V2/ I1*K1 + K2 En aquest moment I1 serà major degut a que la resistència encara és R0 i la tensió és V2. I per tant s’interpreta un valor de Temperatura menor que en E0 tot i que realment no és així. T1< T0 “ERROR” E2(estable): finalment en l’estat E2 el valor de la resistència ha augmentat i s’estabilitza , per tant la relació també es manté Ib = V2/R2 = cte. T0 > T2 < T1 El comportament queda representat en el següent gràfic:

Figura 4.2. Fluctuació del corrent entre dues consignes de tensió diferents. Així doncs després de percebre aquest problema d’inestabilitat entre canvis d’excitació, cal estudiar la solució per portar a terme el control.

Page 18: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

14

Per a definir el període de lectura i actuació d’un control normal, s’acostuma a buscar la t (tau) d’adaptació del paràmetre a controlar i a partir d’aquest temps es

defineix la freqüència de càlcul i actuació com F = 10/ t . En el nostre cas, el requeriment no serà la freqüència mínima d’actuació, com en sistemes normals, sinó el temps mínim d’espera entre lectures sense actuar per tal que el sistema s’estabilitzi i puguem fer una lectura correcta de la temperatura instantània. Significa que haurem de esperar a que la temperatura s’estabilitzi abans de modificar novament el valor de la tensió. Malgrat tot, aquest tipus d’actuació alentirà notablement el control, però també permetrà que el sensor arribi a consignes més elevades ja que, com havíem experimentat en les proves inicials, un increment brusc de la potència pot causar la ruptura del sensor.

Page 19: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

15

Llenguatge de programació per al microcontrolador. El llenguatge de programació que s’utilitzarà per a realitzar el programa de control, serà el llenguatge ensamblador. Aquest, casi només es fa servir per implementar programes de molt baixa complexitat o poc extensos, degut a que és un llenguatge ambigu i difícilment simplificable. El llenguatge més adient per a programar microcontroladors PIC en aquests moments és C, ja que hi ha una gran quantitat de compiladors i conversors a ensamblador que faciliten molt la feina. Tot i que aquests conversors introdueixen més codi del necessari en moltes ocasions.

La gamma dels 18FXXX permeten directament la programació en C. Per altra banda, programar en ensamblador ofereix un control a més baix nivell i per tant ajuda a entendre el hardware. El llenguatge ensamblador que s’utilitzarà és de tipus RISC.Només disposa de 35 instruccions diferents. D’aquesta manera la resta d’operacions s’han de implementar com a derivades d’aquestes primeres. Entorn de control i interfície amb l'usuari.

Es pretén que el Usuari pugui monitoritzar l’estat del control en tot moment i a més

poder aplicar noves consignes de Temperatura a temps real. Per tant tenim diferents opcions:

Col·locar un Display i un teclat. Aquesta solució ens aportaria una gran

independència del mòdul. Però complica el hardware i fa que el mòdul de control hagi d’estar sempre a la vista (“Es a dir una cosa més sobre la taula”).

Comunicació sèrie i software de control per PC. Aquesta solució és la més

efectiva ja que en un laboratori és molt provable que hi hagi un ordinador i a més farà que l’entorn de control pugui ser totalment versàtil i pugui oferir gràfics i emmagatzematge de dades fàcilment. A més redueix la complexitat del Hardware a construir ja que només ha de comptar amb un integrat i uns condensadors per a adaptar la senyal a nivells RS-232.

Page 20: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

16

5. RESULTATS FINALS / IMPLEMENTACIÓ FÓRMULES I CÀLCULS Adaptació de la fórmula escollida per al càlcul en el microcontrolador.

A partir de la fórmula de treball plantejada en l’apartat (Mètode i fórmules de control) podem començar a analitzar quines seran les operacions matemàtiques que haurà de resoldre el microcontrolador, i els requisits de memòria i temps necessaris per a executar-les. La primera fórmula plantejada per tal de realitzar el control va ser deduïda de la següent manera: Partim de : V [mV] = I [mA] · Ro[ Ω ] · ( 1+λT) * Representem en T ( Tactual – Tambient )

3910

432682965102

3910

39108451023102

3910845102310108451023102

3910845102310108451023102

)3910000(108451023101020000

1000039

1100010845

102320000

411

411

411

411

43

−⋅⋅

=

−⋅⋅⋅

⋅=

⋅⋅⋅⋅⋅−⋅

=

⋅⋅⋅+⋅⋅⋅=⋅⋅

+⋅⋅⋅=⋅⋅=

⋅+⋅⋅=⋅

IV

T

IV

T

IIV

T

TIIV

TIV

TIV

AD

AD

AD

AD

AD

AD

Cal convertir tots els termes en números enters per expressar-los en llenguatge ensamblador. Això significa truncar alguns valors en molts casos i una reducció de la precisió. Sabent que T es Tact – Ta (ambient)

TaI

VT AD +−⋅

⋅=

3910

432682965102 411

Page 21: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

17

Compactant els termes constants obtenim la fórmula final que s’introduirà en el microcontrolador:

TaKKI

VT AD +−= 21·

La constant K1: Y la constant K2:

432682965102 11⋅

= 462'23 39

104

= 256' 41

Per utilitzar aquests valors en el microcontrolador hem de convertir-los en valors enters, per tant hem comprovat prèviament l'error introduït en cas de suprimir tota la part decimal. Aquest és de +/- 0,5 ºC. Aixa doncs disposem de la següent fórmula que serà la introduïda en el microcontrolador per a fer les primeres proves empíriques.

La casa Microchip, posa a la nostra disposició una llibreria de codi per a fer operacions matemàtiques. De totes maneres hem de mirar d'integrar-ne el menor nombre possible perquè ocupen espai de memòria de programa. Utilitzarem una llibreria per a multiplicar dues variables de 16 bits, la divisió de 24bits entre 16 bits i una resta de 16 bits. Fórmula amb independència de R0. Donat que el valor de Ro no és un paràmetre idèntic per a tots els sensors s'ha desplaçat de la fórmula de manera que pogués ser configurable:

256391023

102 11

−⋅⋅

⋅⋅=

RoIcV

T ADACT

si aïllem les constants:

391023

1021

11

⋅⋅

=K i

Així doncs deduïm la següent fórmula:

TaKRoK

IcV

T ADACT +−⋅= 2

1

2562 =K

Page 22: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

18

El següent pas serà contrastar la temperatura mesurada en el laboratori i contrastar-la amb el valor calculat utilitzant la fórmula per als mateixos valors de corrent i tensió.

Page 23: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

19

DISSENY HARDWARE

Descripció del microcontrolador utilitzat. El microcontrolador escollit és el PIC 16F877. Les característiques més destacades del microcontrolador, són les següents: La CPU és de tipus RISC, és a dir que només s'utilitzen 35 paraules d'instrucció. Aquest punt ha estat el primer condicionant per al nostre disseny, ja que la implementació del software té molta més complexitat donada aquesta limitació.

Es evident que existeixen traductors de codi que ens permeten dissenyar en llenguatge " C " i posteriorment generen el codi corresponent en llenguatge ensamblador. Però l'inconvenient d'aquests programes és que el codi resultant és més llarg i redundant que si l'implementem en ensamblador directament. Això implica en alguns casos haver d'utilitzar un microcontrolador amb més capacitat de memòria de programa.

En el meu cas, he preferit crear el codi directament en ensamblador per tenir una

implicació més directe amb el hardware i formar-me en aquest tipus de programació.. La velocitat d'operació del micro és de 4 MHz , això equival a un cicle de màquina de 0,25 us. Finalment s’ha utilitzat un oscil·lador de 3’6864MHz que equival a un cicle de màquina de 0,27us. Memòria:

- Memòria de programa FLASH de 8k x 14 paraules. - Memòria de dades (RAM) de 368 x 8 bytes - Memòria de dades EEPROM de 256 x 8 bytes

Conté un Watch-dog Timmer per evitar que el programa es quedi bloquejat. També permet la protecció del codi programat. Mode de funcionament a baix consum : SLEEP mode. Permet la programació i debugar via un port sèrie; In-Circuit Serial Programming (ICSP) via dos pins. Nivells de tensió dins al rang operable de 2 a 5,5 V. El microcontrolador disposa d'alguns perifèrics que faciliten l'implementació d'algunes utilitats:

- Tres Timers /comptadors programables que permeten llançar rutines amb períodes de gran exactitud.

- Dos mòduls PWM amb una resolució de 10 bits. - Un mòdul USART amb 9 bits de direcció d'adreces, per a la transmissió i

recepció sèrie. - Port paral·lel de 8 bits.

Page 24: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

20

Sistema i cirquiteria de control.

El sistema actuador té la següent funció; Traduir la senyal PWM del microcontrolador en potència amb la finalitat d'escalfar-lo fins a la temperatura desitjada. El següent esquema detalla la part actuadora del sistema de control:

Sortida Limitador

Chl AD1

Chl AD0R85k6

R722kR6

100

R5100

R418k

+V

V120V

Q2PNP

Q1NPN

SENS

Shunt

R31k

R2470

R110k

ZXCT1009

Figura 5.1. Esquema electrònic del sistema de control.

El transistor PNP col·locat en sèrie amb el sensor s'encarrega de retallar el corrent a intervals de temps periòdics, per cedir l'energia corresponent a la senyal PWM. Aquest transistor és de tipus PNP per tal de tenir l’emissor referenciat a un nivell de tensió constant, i poder controlar la tensió Base-Emisor amb facilitat. Aquest, treballa sempre en zona de Tall-Saturació, i ha de circular una gran potència a través seu durant les transicions d'estat. Per tant hem elegit un transistor de potència ( TIP 32C) i a més, acompanyat d'un dissipador per tal d'evitar que es s’escalfi massa. El nivell de tensió de la base del transistor PNP està governat per un altre transistor de tipus NPN, aquest de menys potència ja que no passa tant corrent a través seu, i només s'encarrega de traduir la sortida PWM del microcontrolador en nivells de corrent adequats per a governar el transistor PNP. Donat que les sortides PWM del microcontrolador tenen una limitació en corrent. El transistor NPN és un MPS A13

Page 25: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

21

Variables de control i de sensat. Per realitzar el control és necessari obtenir un “feedback” ( una realimentació ) que ens informi de l’estat del paràmetre que es vol controlar. En el nostre cas s’ha escollit un mètode implícit per a deduir el valor de la temperatura en el sensor. Es tracta d’observar les variacions de corrent i tensió a través del sensor per tal de determinar la resistència instantània del mateix, sabent que és un paràmetre que serà modificat d’acord amb les variacions de la temperatura. Així doncs, el sensat es realitza sobre dues variables:

- El corrent que circula a través del sensor. - La tensió ( diferència de potencial elèctric) en els seus extrems.

Adaptació de la senyal: La etapa d’adaptació del llaç de control té la finalitat de traduir a nivells acceptables per al microcontrolador les variables d’interès, amb la mínima distorsió. Per una banda tenim els dos paràmetres citats anteriorment ( tensió i corrent ) amb les característiques següents: La tensió en extrems del sensor oscil·larà entre 0 i 20 V. El corrent que circularà a traves seu oscil·larà entre 0 i 650 mA. Per sobre d’aquests nivells el sensor es trenca i per tant no s’ha de donar mai el cas. Per altra banda tenim les limitacions del nostre microcontrolador que han de ser respectades si volem que la lectura sigui correcta. Els perifèrics que aporta el nostre microcontrolador no permeten la lectura directa de corrent, per tant haurem d’adaptar aquest paràmetre utilitzant algun hardware extern.

A l’hora de realitzar correctament aquesta adaptació, cal conèixer les limitacions del microcontrolador. El nostre microcontrolador disposa d’entrades conversores analògiques digitals ( A/D ) i seran les que utilitzarem per a llegir les variables d’interès. Aquestes entrades estan descrites anteriorment d’on n’extraiem el següent: - El rang de tensió ha d’estar entre 0 i 5 V. ( la entrada Vref no s’utilitzarà). - El corrent d’entrada no pot ser molt elevat - La tensió de lectura ha de ser estable durant un mínim de temps (19,2 us).

Page 26: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

22

Adaptació del corrent. Per a l’adaptació del corrent s’ha utilitzat un Shunt. La finalitat del Shunt és traduir el valor del corrent que circula a través seu en tensió, imposant el mínim de resistència al pas del corrent. He utilitzat una estructura que es fa servir en la meva empresa per a determinar els finals de carrera dels motors. Aquesta estructura està formada per una planxa metàl·lica amb una resistència de 10 miliohms i un integrat (ZXCT1009) que s’encarrega d’amplificar i linealitat la tensió que cau en extrems del shunt a nivells desitjats, d’acord amb una resistència Rout. Un cop instal·lat el Shunt es van prendre unes mesures en el laboratori per confirmar la seva linealitat: Taula 5.2. Comparació del corrent mig mesurat amb multímetre o calculat pel microcontrolador.

Vshunt(mV) ICreal (mA) IC Equa ERROR EQ 84,3 83,00 85,93 -2,93

171,5 128,00 129,49 -1,49260 173,00 173,71 -0,71349 218,00 218,17 -0,17440 264,00 263,63 0,37525 307,00 306,10 0,90615 353,00 351,06 1,94

709,2 400,00 398,13 1,87805,7 447,00 446,34 0,66899,7 495,00 493,30 1,70987,3 538,00 537,07 0,931082 585,00 584,38 0,62

1177,8 633,00 632,24 0,761274,7 680,00 680,65 -0,65

1360 724,00 723,27 0,731460 771,00 773,23 -2,231550 818,00 818,19 -0,191650 866,00 868,15 -2,151738 912,00 912,11 -0,11

MAX error = 2,93 La fórmula utilitzada per a la deducció del corrent en el shunt és la recta de tendència extreta amb la fulla d’Excel a partir de la taula de resultats observats en el laboratori.

Page 27: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

23

En el següent gràfic es pot observar la linealitat entre el corrent que circula pel shunt i el valor de tensió llegit sobre la resistència Rout ( R4 en Esquema 5.1).

Vshunt / IC y = 0,4996x + 43,81

R2 = 1

0,00

100,00

200,00

300,00

400,00

500,00

600,00

700,00

800,00

900,00

1000,00

0 200 400 600 800 1000 1200 1400 1600 1800 2000

VShunt (mV)

IC (m

A)

Gràfic 5.3 Relació de la tensió en la resistència Rout (R4 del esquema 5.1) associada al shunt i el corrent que circula a través del mateix. El gràfic descriu perfectament una recta ( coeficient R2 = 1 ). L’equació de la recta és la següent:

IC Shunt = 0,4996 ( VShunt ) + 43,81 Finalment comprovem que l’error introduït al utilitzar el Shunt amb l’integrat i aplicant la fórmula que ens proporciona el gràfic no supera els 3mA en el pitjor dels casos ( adjuntat en la taula).

Page 28: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

24

Adaptació de la tensió: Per adaptar la tensió llegida en extrems del sensor s’ha utilitzat un simple divisor de tensió ja que aquest ofereix una linealitat molt bona. V2 = V1 * (R2/R2+R1) = 0,2028*V1

R2= 5k6 ohms i R1 = 22k ohms

L’objectiu acotar la tensió que existeix en el sensor però dins un rang operatiu per al microcontrolador. Sabem que el nostre microcontrolador opera dins el rang de 0 a 5 V. Per sobre de 5 V el microcontrolador sempre donarà la mateixa conversió i fins i tot podríem arribar a destruir el canal d’entrada. Per tant intentarem situar el rang de treball entre 0 i 4 V per evitar treballar en zona de risc en cas que la alimentació superés els 20V. Per altra banda sabem que al reduir el rang també queda reduïda la resolució, però disposem de la resolució suficient per als càlculs a realitzar. Per tant en el pitjor dels casos ( V1=20V ) . V2 = 4,057 Després aquesta reducció es compensada en el microcontrolador digitalment. Ha sigut necessari integrar un Offset negatiu de ( -70 mV) per compensar l’error observat si s’operava amb la fórmula teòrica. Seguidament es presenta una taula que compara la lectura de tensió mitja calculada pel microcontrolador i la realitzada per un multímetre convencional en un rang de 0 a 10V un cop el sistema ha estat calibrat. Taula 5.4. Comparació de la tensió mitja llegida amb el multímetre i la calculada pel microcontrolador.

VM SENSOR (mV)

VM REAL (mV)

Vreal-Vcal (mV)

1083 1090 -71 1281 1310 -49 1461 1495 -44 1642 1720 0 1820 1860 -38 2019 2080 -17 2201 2230 -49 2383 2440 -21 2563 2590 -51 2742 2810 -10 2939 3030 13 3118 3180 -16 3302 3390 10 3481 3540 -19 3684 3760 -2 3863 3900 -41 4043 4120 -1 4228 4260 -46 4420 4490 -8

Page 29: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

25

4606 4700 16 4786 4850 -14 4966 5070 26 5146 5220 -4 5344 5440 18 5524 5580 -22 5704 5810 28 5892 5950 -20 6090 6160 -8 6270 6390 42 6450 6550 22 6631 6700 -9 6829 6910 3 7009 7130 43 7189 7270 3 7379 7480 23 7550 7620 -8 7778 7880 24 7949 8000 -27 8130 8250 42 8321 8450 51 8520 8620 22 8690 8830 62 8882 8980 20 9063 9210 60 9274 9430 60 9455 9510 -23 9649 9760 33 9818 9940 44

ERR max 62 La taula s’ha realitzat a partir d’increments d’una unitat en tant per cent del Duty-cycle i anotant per cada increment el valor llegit pel multímetre i el valor deduït pel microcontrolador.

Com es pot observar, al llarg del rang mesurat el màxim error introduït en la interpretació del la tensió caiguda en extrems del sensor és de 62mV.

Page 30: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

26

Excitació amb senyal PWM Una de les idees que es van perseguir va ser mirar de trobar un actuador que aportés una potència contínua al sensor per tal evitar soroll de la freqüència del PWM. De fet no he estudiat el efecte d’aquest en la lectura dels sensors però estic segur que ha de ser perjudicial. He estat estudiant diferents configuracions electròniques que poguessin fer d’actuadors, però la potència necessària deixava arrere moltes propostes. Sabem que la potència d' una senyal PWM va lligada directament al nivell de tensió de la senyal y el “duty_cycle”.

Figura 5.5 Paràmetres d’interès de la senyal PWM. La tensió expressada com ( Vmax ) en el gràfic serà una constant en el nostre sistema, però al cap i a la fi no es pren com un paràmetre constant per al càlcul de la temperatura, es a dir que la seva variació no influirà en la deducció de la temperatura del sensor. Només suposarà una amenaça per a la cirquiteria si supera els 20V o una insuficiència d’energia per arribar a temperatures elevades en cas que estigui per sota de 19V. Per altra banda El Duty Cycle que es defineix com: Duty-cycle = Ton / T (període)

El nostre microcontrolador disposa de dues sortides PWM configurables. Corresponents als pins de sortida 16 i 17, RC1 i RC3 respectivament. La resolució de la sortida PWM és de 10 bits. Fent un petit càlcul podem deduir quina serà la resolució en graus si acotem el rang de treball del nostre sistema: Si decidim fer treballar els sensors dins un rang de 0 a 500ºC, la resolució en graus que obtenim és :

CC

solució º48,01024

º500Re ==

És a dir que tenim una resolució d'aproximadament 0,5 ºC. Aquesta és una limitació del nostre sistema degut a que hem de recórrer un rang de temperatures massa ampli. El Duty-cycle NO podrà arribar mai al 100% ja que s’ha col·locat un limitador per hardware per lat d’evitar que el pin de la senyal PWM quedi fixada a nivell alt mentre es debuga el software o per algun fallo en l’implementació del llaç de control.

Page 31: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

27

Descripció de la limitació per hardware del Duty-cycle:

S’ha ideat una etapa de limitació del duty-cycle donat que mentre es feien proves en mode “debugger” el pin de senyal PWM quedava a nivell alt aportant el 100% de la potència i es cremava el sensor a controlar. Aquesta etapa s’interposa entre la sortida PWM del PIC i l’etapa actuadora:

Figura 5.6. Disposició de la etapa limitadora. L’objectiu de la etapa, és limitar el temps durant el qual la senyal PWM està a nivell alt. Només ha de quedar retallada la sortida en el cas que el temps en el qual la senyal PWM esta a nivell alt és superior al període de la senyal en qüestió. Aquest temps ve determinat per la “Tau” de càrrega del condensador a través de R1.

S1

S2 S3 S4

200 Hz

V10/5V

C1

D1 R1

Figura 5.7. Esquema elèctric de la etapa limitadora. Les tres portes NAND representades es troben dins un mateix integrat ( PC774HC00P) que conté quatre portes nand, per tant una queda sense utilitzar. Seguidament es descriu el funcionament de l’etapa:

Mentre el condensador no esta carregat en S1 tenim un 0 digital i en S2 tenim un

1, això suposa un 0 en S3 i finalment un 1 en S4, aquest és el cas en que la sortida no està saturada a nivell alt, per tant el condensador pot descarregar-se i es transmet exactament la senyal del PIC al actuador. Quan el condensador es carrega perquè no existeix un nivell Toff en la senyal PWM, en S1 tenim un 1 , S2 = 1, S3= 1 i finalment S4 = 0 permanentment.

Page 32: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

28

De fet el limitador podria regular també el Duty màxim en cas que el temps de càrrega del mateix fos menor que el període de la senyal PWM. En aquest cas el Ton quedaria limitat tal com mostra el següent gràfic ( aquest ús està explicat en l’apartat “Propostes de millora / Limitació del “duty-cycle” de la senyal PWM per hardware”):

Gràfic 5.8. Limitació de Ton quan es carrega C1. Es important que la “rama” RC no absorbeixi molt de corrent perquè el PIC té una limitació de corrent de sortida i podria desencadenar una distorsió de la senyal PWM. Per tant la resistència R1 ha de ser elevada per fer que el corrent IR1 sigui baix. Això a més ajudarà a que el condensador necessari pugui ser més petit amb la intenció de conservar la mateixa “Tau”. Com es pot observar S1 descriu una dent de serra que correspon a la càrrega RC del condensador durant Ton i es descàrrega instantània a través del diode. En cas que la senyal PWM quedés saturada al 100% el condensador es pogués carregar del tot la sortida S4 quedaria a nivell baix permanentment com es pot veure en la simulació següent:

Gràfic 5.9: Retall de la sortida quan Ton > Període de la senyal PWM.

Page 33: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

29

Entrades analògiques El nostre microcontrolador també disposa de 8 entrades configuarables com a analògiques. El funcionament d'aquestes es ben senzill; Les entrades analògiques carreguen un petit condensador que es descarrega a través d'un conversor A/D multiplexat, que s'encarrega de generar el resultat digital final. Al conversor A/D integrat té una resolució de 10 bits. I utilitza quatre registres de 8 bits per la seva configuració i emmagatzematge de la conversió Analógica-Digital. El datasheet del microcontrolador recomana que no s’utilitzi una impedància d’entrada al canal A/D superior a 10kohms. El temps de conversió necessari corresponent a aquesta impedància és de 19,72us. Aquest temps disminueix al mateix temps que disminueix la impedància d’entrada, ja que permet una càrrega més ràpida del condensador intern. En el nostre cas s’ha utilitzat una impedància de 100ohms, ja que ofereix una gran rapidesa de conversió.

Implementació de la PCB ( Placa de circuit imprès )

Per al disseny de la placa de circuit imprès s’ha utilitzat el següent software: TRAXMAKER. Per al disseny d’aquesta placa no s’ha considerat escrupolosament el gruix de les pistes mínim. Simplement s’ha sobre-dimensionat i s’han fet més amples aquelles que comunicaven la part de potència. La placa de circuit imprès és de cara simple ja que facilita molt la fabricació i el disseny, i l’interès principal no és minimitzar les dimensions del circuit. El "rutejat" de les pistes ha estat realitzat manualment tot i que el programa permet l’opció de autorutejar automàticament. Però en plaques de poca complexitat sempre es millor "rutejar" manualment. La insolació, revelat de la placa perforació i muntatge s’ha realitzat en taller propi. Ja disposava d’una insolador que vaig fabricar i tots els components necessaris.

Page 34: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

30

El fotolit de la placa de circuit imprès té l’aspecte següent:

Figura 5.10: Fotolit de la PCB per a placa positiva. S’ha intentat augmentar al màxim el pla de massa per fer l’estructura més rígida i facilitar el pas del corrent. L’integrat que acompanya el Shunt s’ha col·locat per la part posterior de la placa ja que només disposava d’aquest en tecnologia SMD. S’han disposat uns “pads” per a la col·locació d’uns suports per a la placa. També s’ha intentat separar la part de senyal i de potència dins de les possibilitats del "rutat" i l’espai disponible. S’ha intentat evitar “cantells” molt pronunciats sobretot en pistes fines. El següent esquema ens mostra la disposició dels components a muntar sobre la placa de circuit imprès:

Figura 5.11: Diagrama de muntatge de la placa PCB.

Page 35: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

31

I finalment s’expressa la llista de components utilitzats:

- PIC16F877 - Sòcol connector RJ-12 programador - Connector DB-9 femella per muntatge superficial. - Led vermell - 4 condensadors electrolítics 4,7uF - 2 sòcols per integrat de 16 i 14 pins - Cristall de quars 3,6864 MHz - 2 condensadors ceràmics de 22pf - Dues regletes de 2 connexions per muntatge superficial - Integrat ST-232-0N - Integrat PC-74HC00-P - TIP32 (PNP) - MPS A13 Darghlinton ( NPN) - 7805CT - Estructura Shunt - Diode - ZXCT1009 (integrat del Shunt) - Condensador 1uF / 63V - Resistències: - 2 x 5k6 - 2 x 100 ohms - 22k - 18k - 1k - 10k - 47ohms

L’aspecte final de la placa de control és el següent:

Figura 5.12: Fotografia de la PCB completa.

Page 36: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

32

DISSENY SOFTWARE Eines de programació i “debuggatge”. Per a la programació del microcontrolador de la casa Microchip és necessari un software que proporciona la mateixa casa en la seva pàgina oficial ( veure Enllaços d’internet 1). Vaig començar utilitzant un “debugger” de la Universitat però finalment en vaig implementar un de nou. En l’annex s’adjunta tota la informació necessària per construir-ne un de nou. - Llista de components - Fotolit per placa positiva - Diagrama de muntatge. És molt important que es faci servir la versió de software i de shareware correcte:

- MPLAB 5.70 (es pot trobar a la pàgina oficial Microchip, utilitza el Search). - La versió de shareware s’inclou dins la llibreria del MPLAB i es pot descarregar

fàcilment des del programa.

Page 37: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

33

Descripció del sistema de control . Estats

El sistema de control es pot descriure en forma de diagrama d’estats. Per una banda tenim una execució de codi que és cíclica i per altra banda unes execucions que es donen a partir d’interrupcions Diagrama de blocs 5.13:

El “bucle” principal realitza una sèrie d’accions de forma cíclica i seqüencial que es veu trencada per motiu d’alguna interrupció. Això significa que el codi que conté ha de tolerar que sigui interromput en qualsevol moment. El diagrama principal que segueix el sistema de control és el següent: Quan el microcontrolador assoleix la tensió per reiniciar la memòria de programa es situa al inici del diagrama. La Inicialització de les constants ( inicialització d’alguns registres de control i definició dels timmers de software) i la configuració dels perifèrics només es realitzable per un "reset" de hardware. Després disposem d’una etiqueta de RESET, que el usuari pot cridar en qualsevol moment i realitzar una inicialització del control partint del mínim DUTY_CYCLE. Un cop el sistema s’ha inicialitzat ens situem en un “bucle” on el micro resta a l’espera que el usuari introdueixi el mode de control que vol realitzar MANUAL (modificant el DC) o AUTOMATIC (assignant una consigna). Després de la selecció del mode, s’activa la sortida PWM amb el Duty_cycle mínim (que ens permet la detecció de circuit obert, per falta de sensor o ruptura del mateix) i realitza una espera de 200us per tal que el sistema s’estabilitzi amb la potència cedida.

Inicializacion de Constantes

CONAD_ON ? CNV_AD

NEW_VS ?

NEW_VR ?

MVS_PWM

FLAG_NEW_CMD = 1 ?

MIC_PWM

EJCMD

Configuracioninterrupciones:

CNF_ADCNF_TMR0CNF_PWMCNF_RS

RESETenvia codigo0x20 , 0x20

Soft Reset porcomando

Solo Interrupciones porrecepcion serie activadas

Flag_new _cmd = 0Flag_manual = 0

PWM = OFF

New _comand? EJCMDSI

Nuevaconsigna?

ModoMamual?

Habilita otrasinterrupciones

DUTYCYCLE = MINPWM =ON

NO

SI

Esperaestabilizacion delsistema = 200us

Page 38: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

34

Seguidament s’entra en el segon “bucle” de programa on s’anirà llegint de forma seqüencial la tensió en extrems del sensor, el corrent que circula a través seu i la execució de les comandes que l’usuari enviï per comunicació sèrie. La resta d’operacions seran executades en les rutines de servei a les interrupcions que es produeixin. Inicialització variables i configuracions Per arrancar el sistema de control és necessari inicialitzar les variables que s’utilitzaran posteriorment i configurar el ports i interrupcions. Tenim les següents funcions descrites que s’encarreguen de les inicialitzacions pertinents: .CNF_AD ( Configura els canals A/D per a les conversions analògiques / digitals) .CNF_TMR0 ( Configura el Timer0, un comptador intern del PIC que llença interrupcions periòdiques) .CNF_PWM ( Configura els paràmetres necessaris per a arrancar la sortida PWM) .CNF_RS ( Configura la UART del PIC per a permetre la comunicació sèrie). Per altra banda s’inicialitzen les variables a un valor desitjat. .DUTY = 0x4C El duty_Cicle de la senyal PWM s’inicialitza a un valor mínim que

permet tenir la sortida activa i comprovar si el sensor està en condicions de rebre potència.

TIM2 = 30 S’inicialitza el timmer de software per a les interrupcions periòdiques.

CTLAD = 00 El registre de control per a les conversions analògiques/ digitals a 0. N_DAT = 00 El número de dades rebudes per port sèrie a 0. INTCON,GIE Finalment amb aquesta inicialització permeto les interrupcions. Durant l’execució normal del programa es realitzen les conversions A/D de forma cíclica. Conversions A/D. L’objectiu d’aquest apartat és recalcular el valor de tensió en extrems del sensor i el corrent que circula a través seu. Es van alternant les lectures de VS i VR consecutivament. Les rutines que gestionen les conversions són les següents: CNV_AD Aquesta funció prepara el canal analògic a explorar.

Page 39: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

35

MVS_PWM Funció que s’encarrega de treure la tensió mitja en extrems del sensor mitjançant un càlcul teòric explicat amb més detall en l’apartat següent.

MIC_PWM Funció que dedueix el corrent mig durant un període de temps a través

del sensor.

CONVERSION VRCanal = AN1

NPER = 4ULPER = 0INIPER = 0

CTLAD,0 = 0 ?

CONVERSION VS:Canal = AN0

INIPER = 0

SINO

INIPER = 1?(INT_TMR2)

NO

ESPERA 130us

ADCON,GO = 1(inicia conversion)

INIPER = 1 ?(INT_TMR2)

NO

ADCON,GO = 1(inicia conversion)

FIN CONVERSION?

NO

SUMA ADRESH iADRESL a

FILTR(3Bytes)MUEST +1

ULPER = 1?

NO

VADR = FILTR / MUESTCTLAD = 0

(proxima conversion para VS)NEW_VR = 1

FIN FUNCION CONV_AD

Diagrama de blocs 5.14

Aquest es el diagrama de flux que es segueix per a determinar l’ordre de les conversions analògiques/digitals. Es defineix com VS la conversió dedicada a la tensió en extrems del sensor, i VR la tensió que es llegeix sobre la resistència associada al integrat del Shunt.

La deducció del valor mig de cada una de les tensions es fa de formes molt diferents, d’acord amb la naturalesa de la senyal a llegir.

Page 40: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

36

Lectura de VS.

La tensió VS presenta una aspecte de senyal PWM molt clara i neta per tant la deducció del valor mig es pot fer seguint la teoria:

S’agafa una mostra de la tensió en Ton de la senyal PWM i es multiplica pel Duty-Cycle, i s’obté immediatament el valor mig de la tensió en aquella sortida.

VS (mitja) = VSmax (en Ton) · Duty Cycle

La utilització d’aquest mètode és ideal ja que permet reduir la reserva de memòria per al càlcul, i és més ràpid. El mètode per agafar la mostra en Ton es ben senzill: Es configura el canal que conte la senyal, i es posa el "flag" de inici de període a 0 esperant que la interrupció de TMR2 ens el posi a 1 en l’ inici de període cada cop que salta per aquest motiu. Tot seguit el diagrama descrit espera 130us per evitar algun pols de pic i es llença la conversió. Finalment la interrupció INT_AD guarda el valor de la mostra en els registres corresponents. Lectura de VR Desafortunadament la senyal que es llegeix sobre la resistència Rout del integrat associat al shunt està fortament distorsionada però si es llegeix amb el multímetre ( que és un mesurador perfecte del valor mig ) veiem que és prou estable i correcte. Aquesta distorsió no permet utilitzar el sistema anteriorment mencionat, així doncs s’ha optat per imitar el comportament del multímetre recollir infinitat de mostres i deduir-ne el valor mig. Aquest procediment és tolerable en els sistemes "monotasca" com es el cas del multímetre però realment consumeix molta memòria i atenció del micro. El més important en el nostre cas és delimitar un nombre enter de períodes de lectura, agafar tantes mostres com sigui possible durant aquest interval, sumar-les i finalment dividir pel número de mostres preses. Es precisament el que descriu el diagrama de la rama VR. S’inicialitza NPER a 4; significa que s’analitzaran quatre períodes. Es va provar empíricament que amb 4 períodes era suficient per tenir una precisió acceptable. Detecció de circuit obert o ruptura de sensor per software. El sistema permet detectar si el connector on es disposa el sensor es troba en circuit obert, degut a que el sensor no esta connectat o degut a la ruptura del mateix. El procediment seguit per a la detecció és ven senzill donat que el nostre sistema ja llegeix els paràmetres necessaris per a la detecció. De fet el mètode parteix de la mesura del corrent que circula pel sensor un cop el sistema està actiu. Per aquest motiu, es determina un duty cycle mínim només activar el control (tant manual com automàtic). En la rutina on es llegeix el valor del corrent, que es realitza contínuament en el “bucle” principal d’execució, es valora si el corrent llegit és major a un valor determinat i si no supera aquest valor, es para el control (tant automàtic com manual) i s’envia un codi d’error per port sèrie, que és interpretat pel software de monitorització del PC i presenta un missatge d’error per a l’usuari.

Page 41: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

37

D’aquesta manera, es pot detectar fàcilment el fallo en el funcionament degut a aquest problema. Execució de les instruccions /“Comandos” rebuts pel port sèrie. La execució dels comandos enviats per l’usuari, es realitzen en el “bucle principal”. De fet la recepció del comando es fa per interrupció, però la rutina de servei a la interrupció (Rsrec), només emmagatzema el comando i activa un “flag” que indica la presencia d’un nou comando pendent per executar. La prioritat d’execució dels “comandos“ és baixa, per aquesta raó s’executa posteriorment a la recepció.

La execució dels comandos rebuts pel port sèrie està descrit en el diagrama que es presenta a continuació:

COMAND = CTLRS 0x0F

T_COMND = 1 ?

COMND -1 = 0 ?COMANDO 1SEND DUTYHSEND DUTYL

SI

COMND-1 = 0 ?COMANDO 2SEND VADSHSEND VADSL

SI

COMND -N = 0 ?COMANDO NSEND VADRHSEND VADRL

SI

NO

NO

COMANDOS TIPO 1SICOMANDOS TIPO2 NO

FIN función EJCMD

FLAG_NEW_CMD=0

COMND -1 = 0 ?DUTYH = DATOHDUTYL = DATOL

REODCSI

COMND -1 = 0 ?

NO

TCOH = DATOHTCOL = DATOLSI

NO

Diagrama de blocs 5.14: Inicialment es reconeix si es tracta d’un comando de tipus 1 o 2 i seguidament es decrementa la variable COMAND fins que resulta 0, identificant que es tracta el número de comanda a executar. Finalment es posa el FLAG de nou comando a 0 per permetre noves recepcions.

Page 42: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

38

La única limitació que presenta el sistema implementat és que si es rep un nou comando abans que s’executi l’anterior, el nou comando és ignorat, però l’usuari és informat i no esdevé cap problema.

Page 43: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

39

Configuració de la senyal PWM en el Microcontrolador. Per a configurar els pins RC1 i RC3 del microcontrolador com a sortides PWM, el primer pas és definir-los com a sortides mitjançant el registre de configuració TRISC<2>. Posant a 0 els dos bits pertinents als pins anteriorment citats. Tot seguit s'han de definir els paràmetres PWM. El Període i el Duty Cycle. El Període és el temps base i el Duty cycle es el temps en el qual la sortida està a nivell alt. La inversa del període és la freqüència. El Període s'especifica escrivint sobre el registre PR2 del microcontrolador i es calcula de la següent forma: PERIODE PWM = [(PR2)+1] · 4 · TOSC · ( TMR2 valor pre-escala ) Per altra banda, el Duty Cycle es configura sobre els registres: CCPR1L i CCP1CON(bits 4 i 5). I seguin la següent formula: PWM DUTY CYCLE = (CCPR1L:CCP1CON<5:4>) · TOSC · (TMR2 valor pre-escala ) Hem mirat de programar el Període màxim per a la senyal PWM, per tal d'ocupar menys temps de CPU, ja que el nombre de interrupcions serà menor. Ens podem permetre aquest període ja que el paràmetre a controlar és temperatura i aquesta té una inèrcia notable en els sensors que s'utilitzen. Per tant, el valor en temperatura es pot assimilar a una constant donat un període i un Duty Cycle fixat. Així doncs, la nostra sortida PWM tindrà un període de funcionament fix, i anirà variant el seu Duty Cycle en funció de la demanda de temperatura a imposar. T(període)=(PR2+1)*4*Tosc*TMR2prescale T(període)= (255+1) *4*0,25*1:16 T = període (244Hz) = 4.096 ms Duty Cycle = f ( T ).

Page 44: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

40

Reordenar Duty-Cycle per adaptar a registres interns Per tal d’assignar el duty cycle de la senyal PWM, cal disposar el seu valor expressat en 10 bits en els registres CCPR2L (MSB) i CCP2CON <5:4> (LSB). Però el nostre codi treballa amb dos registres de 8 bits DUTYH <1:0> (MSB) i DUTYL (LSB) ja que es més còmode per a les operacions. Així doncs, per modificar el duty cal traduir el contingut dels nostres registres als utilitzats pel microcontrolador. La següent rutina s’encarrega de fer la traducció:

Inicialment es "seteja" un flag “UPD_DC” per impedir que s’actualitzi el valor del duty en la rutina de interrupció mentre aquest s’està modificant. Seguidament es fa una copia per no modificar les variables de programa DUTY_H/L. Es borra el contingut dels registres finals amb la mateixa configuració que els registres CCPR2L i CCPR2CON. Es desplaça el contingut dels bits 0 i 1 del registre C_DCL a la posició 4 i 5 del R_DCL fent desplaçaments a la dreta i observant el "carry". Neteja els bits entrats per l’esquerra del registre C_DCL al fer el desplaçament. Es desplaça 6 cops a l’esquerra el registre C_ DCH per situar els dos bits 1 i 0 en la posició 7,6 i es realitza una AND amb el registre C_DCL obtenint els 8 bits més significants. Finalment es copia el contingut de C_DCL en R_DCH i es posa el flag “UPD_DC” d’actualització a 0 per indicar que s’ha finalitzat la conversió.

Diagrama de blocs 5.15:

Falg_UPD_DC = 1

C_DCH = DUTY_HC_DCL = DUTY_L

Borra R_DCH yR_RDCL

C_DCL >>1

Flag_Carry = 1 ? R_DCL = 0x10

Flag_Carry = 1?

C_DCL>>1

R_DCL OR 0x20

C_DCL AND 0x3F

C_DCH << 6

C_DCL AND 0xC0

C_DCL AND C_DCHR_DCH = C_DCL

Flag_UPD_DC = 0

Page 45: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

41

Interrupcions. Per altra banda tenim les interrupcions, que es donaran en conseqüència a uns canvis que no sabem exactament quan es produiran ( excepte la interrupció del Timer0). Les interrupcions s’utilitzen per aquelles tasques que es poden donar aleatòriament com hem dit anteriorment, o per aquelles tasques que requereixen una precisió en el moment d’execució com es el cas de la interrupció del Timer0. En el moment que el PIC rep una interrupció, salta directament a la direcció de programa 0x04, on esta programat que faci un salt incondicional a la etiqueta INT per a la gestió de les interrupcions.

La gestió de les interrupcions es fa seguint el següent diagrama:

ISR(salva el contexto w ,PCLATCH,FSR,STATUS)

INTCON,TOIF = 0 ?INT_TMR0

(interrupcion Timer 0)

PIR1,TMR2IF = 0 ?INT_TMR2

(interrupción para señal PWM)

PIR1,ADIF = 0 ?INT_AD

(interrupcion por fin de conversion AD)

PIR1,RCIF = 0 ? RSrec(interrupción por recepción RS-232)

ISR_fin(restaura el contexto w ,PCLATCH,FSR,STATUS)

Diagrama de blocs 5.16

El bloc ISR “Interrupt Save Registers” s’encarrega de guardar el valor de les variables que estaven en ús abans que es donés la interrupció (W,PCLATCH,FSR,STATUS), per tal de recuperar el curs del programa mitjançant ISR_fin un cop atesa la interrupció en qüestió. Cada interrupció té associada un bit de “Enable” (permís d’interrompre) i un flag que ens indica que el motiu de interrupció s’ha donat. Així doncs, si tenim diferents interrupcions configurades i habilitades, en el moment que es doni una d’elles el micro ens situarà en el diagrama descrit anteriorment, i el flag particular de cada interrupció serà qui ens defineixi el motiu causant de la interrupció. Utilitzem les següents interrupcions:

Page 46: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

42

- INT_TMR2 Aquesta interrupció s’encarrega de governar la sortida PWM a partir

d’un període definit anteriorment i un duty_cicle que es pot anar modificant en el transcurs del programa.

- INT_AD Ens informa quan la conversió Analògica digital a finalitzat. - RSrec Alerta el sistema quan es rep una nova dada pel port sèrie. - INT_TMR0 Desenvolupa interrupcions periòdiques amb exactitud de temps. Interrupció RSrec: El següent diagrama descriu el procediment de lectura e identificació dels “comandos” rebuts pel port sèrie.

RXreg = RCEG

FLAG_NEW_CMD=0?

ES COMANDO?

INICIALIZACIÓN TIMEOUT FLAG_LEE_CMD=1

ES COMANDO 1?

COMANDO 1NUEVO COMANDO

LISTO PARA EJECUTARFLAG_NEW_CMD=1FLAG_LEE_CMD=0

N_DAT > 1?

N_DAT -1DATO H= DATO RECIBIDO

N_DAT -1DATO L= DATO RECIBIDO

FLAG_NEW_CMD=1FLAG_LEE_CMD=0 COMANDO 2

N_DAT=2

SI

SI

SI

NO

NO

SI

NO

FIN de servicio a lainterrupcion RS_REC

Diagrama de blocs 5.17

Cada cop que es produeix una interrupció sèrie degut a la recepció d’un nou byte ens situem al primer estat del diagrama. Després es comprova si hi ha alguna execució (no lectura) pendent, en aquest cas s’ignora el dato rebut. Sinó és el cas, es determina si el byte es un comando o son dades d’un comando en curs. Si és comanda llegint el bit 4 i 5 es pot identificar si es de tipus 1 o 2, i donar per finalitzat el comando o esperar nous bytes de dades en cas de comanda tipus 2 (inicialitzant NDAT = 2). També disposa d’un “timeout” per donar el comando per perdut en cas que no es completi en menys d’un temps determinat ( exclusiu per comando tipus 2).

Page 47: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

43

Comunicació via RS232 amb el PC. El PIC utilitzat disposa d’una UART que permet la comunicació sèrie. S’ha utilitzat per monitoritzar i controlar el funcionament de l’aparell. En un principi es va plantejar la col·locació d’un display i uns polsadors per controlar el sistema i fer-lo més independent, però per altra banda la monitorització RS-232 permet molta més flexibilitat i possibilitat d’actualització, ja que només depèn del software implementat.

Aquest és el diagrama del interfície extern necessari per comunicar el PIC amb el PC a través de la norma RS 232.

TX PICRX PIC

+

1uF

+V5V

+

1uF

+

1uF

+

1uF

+

1uF

MAX 232

P1P2P3P4P5P6P7P8 P9

P10P11P12P13P14P15P16

Figura 5.18. Esquema elèctric del hardware per habilitar la comunicació sèrie. S’ha hagut que dissenyar un protocol de comunicació que permetés el traspàs d’informació bidireccional. Encara que tot envio del PIC es una resposta a una petició abans realitzada pel PC. Analitzant els requisits necessaris del nostre sistema, s’han ideat dos tipus de comanda : - Consulta ( Tipus de comando 1) : el qual el PC envia un byte especificant quin

paràmetre vol que el PIC li retorni (en dos bytes). El byte transmès anomenat ID conté els següents camps:

Els dos bits lliures podrien servir per a definir nous tipus de comandes per exemple paràmetres de més de dos bytes, etc. ( no estan tolerats en el protocol implementat).

Page 48: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

44

Els dos bits TIP1 o TIP 2 indiquen el tipus de comando que es rebrà, per tal que el PIC sàpiga si ha d’esperar bytes de dades o no. Finalment els quatre bits de menys pes codifiquen la instrucció que es vol realitzar, fins a 16 instruccions 2 exp(4).

- Modificació ( Tipus de comando 2) formada per tres bytes : especifiquem quina variable del pic volem sobre-escriure seguida del seu valor expressat en 2 bytes.

Aquest tipus de comando està format per tres bytes. El primer Identificador que conté el tipus de comanda (2) i el identificador del paràmetre a modificar ( possibilitat de codificar-ne 16) seguit dels dos bytes de dades amb el nou valor per al paràmetre.

El PIC genera una interrupció en el moment que rep un nou comando, aquesta interrupció emmagatzema els bytes d’interès, seteja un “flag” de comando pendent i continua en mode d’execució normal fins al moment que s’atén la rutina de executar el comando pendent en el “bucle”principal.

De totes maneres fins que no s’ha acabat la execució una comanda no s’habilita la recepció d’altres. Tot i que l’usuari en queda informat ja que el PIC no retorna la resposta i salta un “timeout”.

De la mateixa manera si el cable sèrie de comunicació es talla a mitja transmissió, salta un “timeout” del programa en execució en el PC i informa a l’usuari, i el PIC borra el “buffer” de recepció discriminant la recepció que havia quedat a mitges.

Disposem dels següents comandos:

Consultes. - VADS ( Codificació binària d’una mostra en Ton de la senyal PWM en extrems del

sensor. - VADR ( Codificació binària de la tensió mitja llegida el Shunt) - MEDVS ( tensió mitja en extrems del sensor calculada a partir del duty i VADS). - MEDIC (Corrent mitja que circula a traves del sensor calculada a partir de VADR) - TINS (Temperatura instantània del sensor)

Modificacions.

- DUTY_CYCLE (Modificació del duty cycle de la senyal PWM) - CONSIGNA ( Modificació de la Consigna de temperatura a la que volem que el sensor

es situi) Una de les comandes especials de Modificació és la del Duty_cicle, ja que l’usuari

l’expressa en tant per cent, el software del PC l’envia en 2 bytes y un cop rebut el pic el reordena per col·locar-lo en els 10 bits dels registres de control.

Page 49: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

45

Evidentment el protocol està dissenyat per a l’aprofitament màxim dels bytes transmesos, això implica una limitació de 16 comandes de cada tipus. Software de control del PC. El següent pannell és la interfície de control i visualització que s’ha implementat per comunicar l’usuari amb el sistema.

Gràfic 5.19 Pantalla de control del PC.

El pannell presentat, permet interactuar amb el controlador per comunicació sèrie (Rs232). És un entorn de laboratori, amb una idea pràctica més que no pas estètica. Esta dividit en diferents sectors que es descriuen en el Manual de l’usuari adjunt com a annexa anomenat : “Manual d’usuari per al pannell de control de temperatura amb microcontrolador per a sensors de gasos” El gran avantatge d’aquest sistema és que la recepció de dades en el microcontrolador es fa per interrupció, per tant el sistema pot funcionar sempre independent al pannell de control. És a dir que un cop s’ha enviat la consigna, el controlador continuarà funcionant amb la consigna entrada encara que es desconnecti el port sèrie.

Page 50: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

46

ANÀLISIS AL LABORATORI

- Ruptura dels sensors:

La ruptura dels sensors es produeix a una temperatura aproximada de 490ºC, però també depèn de la pendent de pujada. Si el sistema de control força una potència elevada de forma ràpida sense deixar que la correspondència en temperatura es produeixi, forçarem un corrent massa alt a través del sensor i provocarem la ruptura del mateix.

Les proves en el laboratori corroboren aquest comportament. Aplicant una rampa uniforme de 1V cada 3 minuts s’ha arribat a una temperatura de 520ºC, a una tensió de 19,5V i un corrent de 0,66A.

En canvi quan la rampa era d’1V per minut , només s’ha arribat a una

temperatura de 490ºC, corresponent a 17V i un corrent de 0,52A.

Per tant, cal que el sistema realitzi les variacions del Duty_Cycle deixant temps entre cada variació perquè la temperatura corresponent a la potència cedida s’estabilitzi, de manera que els valors de corrent i tensió llegits es corresponguin a la temperatura en estat estacionari.

Page 51: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

47

- Mesures reals de temperatura:

Un cop el sistema de control esta implementat s’han realitzat unes mesures en el laboratori per observar el funcionament.

S’ha utilitzat un termòmetre de temperatura de la Universitat que permet la regulació de la emisivitat i s’ha configurat a 0,70 d’acord amb una taula que indica el valor d’emisivitat que s’ha d’utilitzar per a cada material (en el nostre cas per a l’alúm ina).La taula següent mostra la relació entre tots els paràmetres d’interès:

Taula 5.20: Relació de mesures preses al laboratori a increments del Duty-Cicle de la senyal PWM.

DUTY ( % ) Vsens(mV) ICsens(mA) Temp( ºC ) 6 1003 130 103 7 1213 160 122 8 1414 164 133 9 1613 176 150

10 1798 194 158 11 2009 206 170 12 2189 214 178 13 2377 224 189 14 2559 241 196 15 2738 249 208 16 2947 259 215 17 3140 264 224 18 3306 274 233 19 3500 279 245 20 3684 291 254 21 3868 294 259 22 4093 311 265 23 4262 314 271 24 4467 319 280 25 4667 326 287 26 4850 334 292 27 5006 349 298 28 5208 351 303 29 5422 361 313 30 5590 369 318 31 5770 374 321 32 5939 376 329 33 6130 381 339 34 6345 399 342 35 6510 403 349 36 6745 406 357 37 6910 409 360 38 7130 411 366 39 7303 416 370 40 7500 424 375 41 7670 434 380 42 7830 439 387 43 8093 451 392 44 8237 461 394 45 8431 466 405

Page 52: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

48

Per a realitzar el control de l’excitació s’ha utilitzat el pannell de control del PC, que permet indicar un duty-cycle determinat quan funciona en mode manual. El pas entre cada mesura ha estat d’un 1% del duty-cycle de la senyal PWM. I s’ha esperat un temps mig de 1,30 minuts entre una mesura i la següent per deixar que el sistema s’estabilitzi entre canvis d’excitació. S’ha realitzat un gràfic que recull la relació entre el Duty-Cycle de la senyal PWM en tant per cent i la temperatura assolida:

050

100150200250300350400450

0 10 20 30 40 50

DUTY

TEM

P

Gràfic 5.21: Correspondència en temperatura amb el “duty” d’excitació. S’observa que la correspondència amb temperatura respecte a l’excitació de la senyal PWM segueix una línia de tendència bastant recta i uniforme. També s’ha realitzat un gràfic per observar la relació entre el quocient Vs/IC i la temperatura corresponent, ja que és la relació que s’aplica en la fórmula de càlcul de la temperatura instantània.

y = 26,999x - 94,373R2 = 0,9962

0

50

100

150

200

250

300

350

400

450

0 2 4 6 8 10 12 14 16 18 20

VS/IC

Tem

p

Gràfic 5.22: Lectures reals de temperatura respecte el coeficient Vs/Ib

Page 53: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

49

El coeficient R2 amb el valor 0,9962 indica que s’assimila a una recta , per tant confirma el comportament descrit per la fórmula de control: Finalment, mitjançant l’equació de la línia recta de tendència podem relacionar els valors K1 i K2 amb els coeficients 26,999 i 94,373 respectivament. Aquests valors seran les constants utilitzades en el microcontrolador per a calcular el valor de la temperatura instantània.

21· KKIbVa

Tact +=

Page 54: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

50

6.PROPOSTES DE MILLORA Excitació lineal del sensor.

L’objectiu final del disseny és escalfar l'element calefactor del sensor per tal de permetre una lectura a la temperatura òptima i sense variacions d’aquest paràmetre ja que sabem que afecta notòriament la lectura en el sensor. Però utilitzant un sistema d’excitació PWM en un heater que esta justament situat a la part posterior del sensor indueix a la introducció d’un soroll.

Aquestes proves empíriques no s’han realitzant però consistiria en fer circular un corrent típic de mesura en el sensor i activar el sistema calefactor en paral·lel i finalment observar les fluctuacions en la tensió de la cèl·lula sensora.

Un cop realitzades les proves i veient la distorsió introduïda es podria determinar si el sistema de control es tolerable per l’aplicació. Limitació del “duty-cycle” de la senyal PWM per hardware Un cop finalitzat el sistema de control complet per als vuit sensors, i tinguem una font d’alimentació per aquesta aplicació. Sabent el valor exacte de la tensió d’excitació Vcc, es pot modificar la resistència de l’etapa limitadora del PWM per un potenciòmetre i calibrar-lo per limitar el valor del duty-cycle. D’aquesta manera no només limitarà la sortida quan la senyal PWM es quedi a nivell alt, sinó que també limitarà el duty- cycle màxim, evitant que el sensor es trenqui degut a que l’usuari ha entrat una consigna de temperatura massa elevada.

Limitació del corrent màxim. De la mateixa manera que s’ha introduït una limitació de potència de la senyal PWM, es tenia pensat introduir una limitació per hardware del corrent d’excitació. La idea era utilitzar la traducció en tensió que realitza l’integrat ZXCT1009 sobre la resistència Rout i entrar-la en un Amplificador Operacional en mode comprador per tal de retallar la sortida en cas que superés un valor preestablert per un potenciòmetre regulable i calibrat. Temps d’actuació variable respecte a la temperatura. Sabem que el sistema no permet actualitzacions del duty a una freqüència massa elevada degut a la inestabilitat del sistema, i a una interpretació errònia de la temperatura instantània durant la transició. ( veure punt 4.3 Estabilitat del control). El sistema de control pot interpretar una temperatura instantània baixa malgrat que la real sigui molt major i continuï cedint potència, desencadenant una excitació excessiva. Per aquest motiu, si la consigna fixada és propera al límit de ruptura, podria provocar que el sensor es trenqués.

Page 55: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

51

Però aquest risc només es dóna per a valors elevats de consigna. Es a dir que si volguéssim accelerar el sistema de control podríem fer que el temps de recalcul del Duty cycle variés d’acord a la temperatura instantània. D’aquesta manera, per a valors baixos de temperatura, sense risc d’alts corrents, podem treballar amb una espera menor entre una excitació i la següent, encara que impliqui corrents instantanis superiors als necessaris per arribar a la consigna final. Però a mesura que la temperatura llegida augmenti, cal deixar suficient temps perquè el sistema s’estabilitzi i no s’incrementi la potència entregada innecessàriament degut a una lectura incorrecte. 7. ANNEXES 1. CODI ENSAMBLADOR PER AL MICROCONTROLADOR 2. MANUAL D’USUARI DEL PANELL DE CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS. 3. CODI DEL PROGRAMA DE CONTROL PER AL PC ( EN VISUAL BASIC ). 8. REFERÈNCIES BIBLIOGRÀFIQUES 1. LA BIBLIA VISUAL BASIC 6 ( ANAYA ) Jose Carlos Jiménez Pérez. 2. Datasheets: - PIC16F877 (especificació del micrcontrolador) - ZXCT1009 (integrat associat al shunt) ENLLAÇOS D'INTERNET 1. www.Microchip.com ( Proporciona el software de programació, exemples i tot el necessari per realitzar projectes amb microcontroladors PIC). 2. www.x-robotics.com (Entorns de control via RS232) 3. www.piclist.com/techref/microchip/rs232.htm (retines per pic específiques).

Page 56: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

ANNEX 1

CODI ENSAMBLADOR PER AL MICROCONTROLADOR

Page 57: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA ANNEXE 1. CODI ENSAMBLADOR PER AL MICROCONTROLADOR ÍNDEX DE CODI

1. MAPA DE REGISTROS DEL PIC 16F877 .pag 1 2. VARIABLES PROPOSITO GENERAL .pag 5 3. FUNCIONES CONVERSION A/D .pag 8 4. RUTINA DE INTERRUPCION .pag 11 5. FUNCIONES MATEMATICAS .pag 13 6. FUNCIONES PWM .pag 21 7. FUNCIONES PARA LA TRANSMISION VIA RS-232 .pag 23 8. FUNCIONES TMR0 .pag 28 9. FUNCION CTINS .pag 29 10. PROGRAMA PRINCIPAL .pag 31

Page 58: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

1

1.MAPA DE REGISTROS DEL PIC 16F877 ;************************************************************************ ; MAPA DE REGISTROS DEL PIC 16F877 ; ; Los bits que son negados se expresan con N_ delante ;************************************************************************ TMR0 EQU 01H ;BANCO 0 PCL EQU 02H STATUS EQU 03H FSR EQU 04H PORTA EQU 05H PORTB EQU 06H PORTC EQU 07H PORTD EQU 08H PORTE EQU 09H PCLATH EQU 0AH INTCON EQU 0BH PIR1 EQU 0CH PIR2 EQU 0DH TMR1L EQU 0EH TMR1H EQU 0FH T1CON EQU 11H T2CON EQU 12H SSPBUF EQU 13H SSPCON EQU 14H CCPR1L EQU 15H CCPR1H EQU 16H CCP1CON EQU 17H RCSTA EQU 18H TXREG EQU 19H RCREG EQU 1AH CCPR2L EQU 1BH CCPR2H EQU 1CH CCP2CON EQU 1DH ADRESH EQU 1EH ADCON0 EQU 1FH OPTION_REG EQU 81H ;BANCO 1 TRISA EQU 85H TRISB EQU 86H TRISC EQU 87H TRISD EQU 88H TRISE EQU 89H PIE1 EQU 8CH PIE2 EQU 8DH PCON EQU 8EH SSPCON2 EQU 91H PR2 EQU 92H SSPADD EQU 93H SSPSTAT EQU 94H TXSTA EQU 98H SPBRG EQU 99H ADRESL EQU 9EH ADCON1 EQU 9FH EEDATA EQU 10CH ;BANCO 2 EEADR EQU 10DH EEDATH EQU 10EH EEADRH EQU 10FH EECON1 EQU 18CH ;BANCO 3 EECON2 EQU 18DH

Page 59: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

2

;----- status bits -------------------------------------------------------- IRP EQU 7 RP1 EQU 6 RP0 EQU 5 N_O EQU 4 N_PD EQU 3 Z EQU 2 DC EQU 1 C EQU 0 ;----- intcon bits -------------------------------------------------------- GIE EQU 7 PEIE EQU 6 T0IE EQU 5 INTE EQU 4 RBIE EQU 3 T0IF EQU 2 INTF EQU 1 RBIF EQU 0 ;----- pir1 bits ---------------------------------------------------------- ADIF EQU 6 RCIF EQU 5 TXIF EQU 4 SSPIF EQU 3 CCP1IF EQU 2 TMR2IF EQU 1 TMR1IF EQU 0 ;----- pir2 bits ---------------------------------------------------------- EEIF EQU 4 BCLIF EQU 3 CCP2IF EQU 0 ;----- t1con bits --------------------------------------------------------- T1CKPS1 EQU 5 T1CKPS0 EQU 4 T1OSCEN EQU 3 N_T1SYNC EQU 2 T1INSYNC EQU 2 T1SYNC EQU 2 TMR1CS EQU 1 TMR1ON EQU 0 ;----- t2con bits --------------------------------------------------------- TOUTPS3 EQU 6 TOUTPS2 EQU 5 TOUTPS1 EQU 4 TOUTPS0 EQU 3 TMR2ON EQU 2 T2CKPS1 EQU 1 T2CKPS0 EQU 0 ;----- sspcon bits -------------------------------------------------------- WCOL EQU 7 SSPOV EQU 6 SSPEN EQU 5 CKP EQU 4 SSPM3 EQU 3 SSPM2 EQU 2 SSPM1 EQU 1 SSPM0 EQU 0

Page 60: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

3

;----- ccp1con bits ------------------------------------------------------- CCP1X EQU 5 CCP1Y EQU 4 CCP1M3 EQU 3 CCP1M2 EQU 2 CCP1M1 EQU 1 CCP1M0 EQU 0 ;----- rcsta bits --------------------------------------------------------- SPEN EQU 7 RX9 EQU 6 SREN EQU 5 CREN EQU 4 ADDEN EQU 3 FERR EQU 2 OERR EQU 1 RX9D EQU 0 ;----- ccp2con bits ------------------------------------------------------- CCP2X EQU 5 CCP2Y EQU 4 CCP2M3 EQU 3 CCP2M2 EQU 2 CCP2M1 EQU 1 CCP2M0 EQU 0 ;----- adcon0 bits -------------------------------------------------------- ADCS1 EQU 7 ADCS0 EQU 6 CHS2 EQU 5 CHS1 EQU 4 CHS0 EQU 3 GO EQU 2 N_DONE EQU 2 GO_DONE EQU 2 ADON EQU 0 ;----- option_reg bits ---------------------------------------------------- N_RBPU EQU 7 INTEDG EQU 6 T0CS EQU 5 T0SE EQU 4 PSA EQU 3 PS2 EQU 2 PS1 EQU 1 PS0 EQU 0 ;----- pie1 bits ---------------------------------------------------------- ADIE EQU 6 RCIE EQU 5 TXIE EQU 4 SSPIE EQU 3 CCP1IE EQU 2 TMR2IE EQU 1 TMR1IE EQU 0 ;----- pie2 bits ---------------------------------------------------------- EEIE EQU 4 BCLIE EQU 3

Page 61: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

4

CCP2IE EQU 0 ;----- pcon bits ---------------------------------------------------------- N_POR EQU 1 N_BO EQU 0 N_BOR EQU 0 ;----- sspcon2 bits -------------------------------------------------------- GCEN EQU 7 ACKSTAT EQU 6 ACKDT EQU 5 ACKEN EQU 4 RCEN EQU 3 PEN EQU 2 RSEN EQU 1 SEN EQU 0 ;----- sspstat bits ------------------------------------------------------- SMP EQU 7 CKE EQU 6 D_N_A EQU 5 P EQU 4 S EQU 3 R_N_W EQU 2 UA EQU 1 BF EQU 0 ;----- txsta bits --------------------------------------------------------- CSRC EQU 7 TX9 EQU 6 TXEN EQU 5 SYNC EQU 4 BRGH EQU 2 TRMT EQU 1 TX9D EQU 0 ;----- adcon1 bits -------------------------------------------------------- ADFM EQU 7 PCFG3 EQU 3 PCFG2 EQU 2 PCFG1 EQU 1 PCFG0 EQU 0 ;----- eecon1 bits -------------------------------------------------------- EEPGD EQU 7 WRERR EQU 3 WREN EQU 2 WR EQU 1 RD EQU 0

Page 62: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

5

2.VARIABLES PROPOSITO GENERAL ;*********************************************************************** ; VARIABLES PROPOSITO GENERAL ;*********************************************************************** ;Constantes: #define _C STATUS,C #define LSB 0 #define F 1 #define w 0 ;Variables: #define FLAG_new_cons CTLINI,0 ;Indiaca si el usuario ha inicializado la consigna W EQU 0x20 REGINT EQU 0x21 ;Registro copia de PIE1 para salvar TIM1 EQU 0x22 ;TIMER de software 1 C_TIM1 EQU 0X23 ;Copia del Timer 1 TIM2 EQU 0x24 ;TIMER de software 2 C_TIM2 EQU 0x25 ;Copia del timer 2 TIM3 EQU 0x26 ;TIMER de software 3 CTLINI EQU 0X27 ;Registro de control de inicializaciones C_ESPE EQU 0x28 ;Contador para el periodo de espera ;_________________________________________________________________________ ;Copias temporales de los registros principales para las Interruciones #define FLAG_stop_gint CTLINT,0 ;A 1 solo mantiene int por RS232 W_TEMP EQU 0x2A ;Copia del registro W STATUS_TEMP EQU 0x2B ;Copia del registro STATUS PCLATH_TEMP EQU 0x2C ;Copia del registro PCLATH FSR_TEMP EQU 0x2D ;Copia del registro FSR CTLINT EQU 0x2E ;Registro de control de interrupciones ;_________________________________________________________________________ ;Variables y constantes de la señal PWM ;Constantes: #define INIPER CTLPWM,0 ;Indica si es inicio de periodo #define UPD_DC CTLPWM,1 ;Indica si el proceso de actualizacion del duty esta en curso #define ULPER CTLPWM,2 ;Indica que debe terminar la conversion de la ponderacion para el shunt ;Variables: CTLPWM EQU 0x30 ;Registro para controlar eventos sobre la señal PWM DUTYL EQU 0x31 ;Duty Cicle Low DUTYH EQU 0x32 ;Duty Cicle High TON EQU 0x33 ;Nivel alto del PWM (1/1024) C_DCL EQU 0x34 ;Copia del DUTY byte H C_DCH EQU 0x35 ;Copia del DUTY byte L R_DCL EQU 0x36 ;DUTY ordenado para copiar directamente a CCPR2L R_DCH EQU 0x37 ;DUTY ordenado para copiar directamente a CCP2CON NPER EQU 0x38 ;Numero de periodos FILTR0 EQU 0x39 FILTR1 EQU 0x3A FILTR2 EQU 0x3B FILTR3 EQU 0x3C MUESTL EQU 0x3D

Page 63: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

6

MUESTH EQU 0x3E ;_________________________________________________________________________ ;Variables y constantes para la conversion AD #define CONAD_ON CTLAD,1 ;Conversion en proceso #define NEW_VS CTLAD,2 ;Nueva conversion tomada sobre el reostato #define NEW_VR CTLAD,3 ;Nueva conversion tomada sobre el shunt CTLAD EQU 0x40 ;Registro de control para la conversion AD WAITAD EQU 0x41 ;Espera coger Ton VADSL EQU 0x42 ;Tension en reostato byte bajo VADSH EQU 0x43 ;Tension en reostato byte alto C_VADSL EQU 0x44 ;Copia tension en reostato byte bajo C_VADSH EQU 0x45 ;Copia tension en reostato byte alto VADRL EQU 0x46 ;Tension aportada por el Shunt, byte bajo VADRH EQU 0x47 ;Tension aportada por el Shunt, byte alto MEDVSL EQU 0x48 ;Tension media del PWM en reostato, byte bajo MEDVSH EQU 0x49 ;Tension media del PWM en reostato, byte alto MEDICL EQU 0x4A ;Media de corriente IC de la señal PWM, byte bajo MEDICH EQU 0x4B ;Media de corriente IC de la señal PWM, byte alto ;___________________________________________________________________________ ;Variables y constantes comunicacion RS232 CONSTANT RS_TIMEOUT = .10 ;(Basado en interrupciones de Tmr0 ) #define FLAG_lee_cmd CTLRS,7 ;Flag estado de recepcion de un comando #define FLAG_new_cmd CTLRS,6 ;Flag estado de recepcion de un comando #define T_COMND CTLRS,5 ;Tipo de comando ( COMANDO SIN BYTES DE DATOS / COMANDO 1Byte + 2Bytes de datos) CTLRS EQU 0x50 N_DAT EQU 0x51 DATOL EQU 0x52 DATOH EQU 0x53 COMND EQU 0x54 RXreg EQU 0x55 DELAY EQU 0x56 ;__________________________________________________________________________ ;Variables y constantes para calculo Temperatura #define FLAG_manual CTLTMP,0 ;FLAG de modo de control (Automatico/Manual) TINSH EQU 0x60 ;Temperatura calculada instantanea, byte bajo TINSL EQU 0x61 ;Temperatura calculada instantanea, byte alto TCOH EQU 0x62 ;Temperatura de consigna Byte alto TCOL EQU 0x63 ;Temperatura de consigna Byte bajo CTLTMP EQU 0x64 ;Registro de control de temperatura ;__________________________________________________________________________ ;Variables y constantes para calculo Matematico LOOPCOUNT EQU 0x65 AARGB3 EQU 0x66 AARGB2 EQU 0x67 AARGB1 EQU 0x68 AARGB0 EQU 0x69 BARGB3 EQU 0x6A BARGB2 EQU 0x6B BARGB1 EQU 0x6C BARGB0 EQU 0x6D

Page 64: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

7

TEMPB1 EQU 0x6E TEMPB0 EQU 0x6F TEMP EQU 0x70 ;Division REMB0 EQU 0x71 REMB1 EQU 0x72

Page 65: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

8

3.FUNCIONES CONVERSION A/D ;************************************************************************** ; FUNCIONES CONVERSION A/D ;************************************************************************** ;1- CNFAD (Configura los canales y modo) ;2- VSPWM (Lee la tension Vmax en VS) ;3- CNVAD (Inicia la conversion a inicio de periodo) ;4- MVS_PWM (Media de tension en Vs de la señal PWM) ;5- MIC_PWM (Media del corriente IC de la señal PWM) ;6- INT_AD (Servicio a la interrupcion de conversion AD) ;************************************************************************** ; FUNCION CNFAD ;************************************************************************** ;Configuración de los registros para la conversion AD ; ADCON1 =|ADFM|---|---|---|PCFG3|PCFG2|PCFG1|PCFG0| CNF_AD banksel ADCON1 ;ADCON1 en banco1 movlw b'10000000' movwf ADCON1 ;Justificado a la derecha. movlw b'00111111' movwf TRISA ;Puerto A de entradas analogicas movlw b'00000000' movwf TRISC ;Puerto C de salidas banksel PORTB ;Seleccion banco 0 ;Configuracion de la Interrupción CADINT bcf PIR1,ADIF ;Borra el flanco de interrupcion AD banksel PIE1 ;Selecciona el banco1 bsf PIE1,ADIE ;Habilita interrupción por AD banksel PORTB ;Seleccion banco 0 bcf PIR1,ADIF ;Flanco de INT AD return ;************************************************************************** ; FUNCION CNVAD ;************************************************************************** ;Elige el Canal a convertir segun CTLAD,0 (modificado por la interrupcion AD) CNV_AD btfsc CTLAD,0 ;CTLAD,0 = 0 --> Convrsion para VS goto CNV_VR CNV_VS ;Obtiene una muestra de tension en Ton sobre Vs ( sobre el sensor reaostato ) movlw b'01000001' ;Fosc/8 [7-6], A/D chanel [5-3], a/d on [0] movwf ADCON0 ;(Canal AN0 conectado a VS) goto IN_CNV IN_CNV bcf INIPER ;Baja FLAG inicio de periodo btfss INIPER ;Espero al flanco de subida del periodo (seteado por INT de PWM) goto $-1 movlw .20 movwf WAITAD ;Espera de 32us aproximadamente ( 20 * 6 * tosc (0,27) = 32,4us)

Page 66: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

9

NOP NOP NOP DECFSZ WAITAD,F goto $-4 bsf ADCON0,GO ;Inicia la conversion. (Resultado en VADS+1,VADS+0 rellenado por INTERRUPCION) bsf CONAD_ON goto FIN_CNV CNV_VR ;Obtiene media de la tension en el shunt movlw b'01001001' ;Fosc/8 [7-6], A/D chanel [5-3], a/d on [0] movwf ADCON0 ;(Canal AN1 conectado a VR del Shunt) movlw .4 movwf NPER ;Inicializa el contador de numero de periodos clrf MUESTL ;Borra los contadores de muestras tomadas clrf MUESTH clrf FILTR0 ;Borra los registros para una nueva suma clrf FILTR1 clrf FILTR2 clrf FILTR3 bcf ULPER ;FLAG de ultimo periodo para conversion a 0 bcf INIPER ;Baja FLAG inicio de periodo btfss INIPER ;Espero al flanco de subida del periodo (seteado por INT de PWM) goto $-1 ;Filtro digital para conseguir la tension media ADQUI bsf ADCON0,GO ;Empieza la conversion A/D ESPERA1 btfsc ADCON0,GO goto ESPERA1 ;Esperamos que se finalize la conversion banksel ADRESL movfw ADRESL banksel PORTB addwf FILTR2,f ;Sumamos una muestra mas Byte bajo btfss STATUS,C goto SIG movlw .1 addwf FILTR1,f btfss STATUS,C goto SIG movlw .1 addwf FILTR0,f incf FILTR0,f SIG movfw ADRESH ;Byte alto addwf FILTR1,f btfsc STATUS,C incf FILTR0,f incf MUESTL,f ;Incrementa número de muestras tomadas btfsc STATUS,Z incf MUESTH,f

Page 67: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

10

FINAD btfss ULPER ;Flanco que identifica ultimo periodo a analizar goto ADQUI movfw FILTR0 movwf AARGB0 movfw FILTR1 movwf AARGB1 movfw FILTR2 movwf AARGB2 movfw MUESTH movwf BARGB0 movfw MUESTL movwf BARGB1 call DIV2416U ;Tension media = FILTRO(Suma de valores)/MUEST(Numero de muestras) movfw AARGB1 ;Calcula el valor medio de las muestras tomadas movwf VADRH ;y se guarda en VADR2+0,VADR2+1 movfw AARGB2 movwf VADRL ;Comprueba si el sensor esta desconectado o roto

Page 68: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

11

4. RUTINA DE INTERRUPCION ;***** RUTINA DE INTERRUPCION ***** ;************************* ;*** SALVAMOS CONTEXTO *** ;************************* ISR bcf INTCON,GIE ; disable all interrupts btfsc INTCON,GIE ; assure interrupts are disabled goto ISR movwf W_TEMP ; context save: W swapf STATUS,W ; context save: STATUS movwf STATUS_TEMP ; context save clrf STATUS ; bank 0, regardless of current bank movfw PCLATH ; context save: PCLATH movwf PCLATH_TEMP ; context save clrf PCLATH ; page zero, regardless of current page bcf STATUS,IRP ; return to bank 0 movfw FSR ; context save: FSR movwf FSR_TEMP ; context save return ;*** contexto salvado *** ;************************************************ ;*** FIN DE INTERRUPCION RESTAURAMOS CONTEXTO *** ;************************************************ ISRfin movfw FSR_TEMP ; context restore movwf FSR ; context restore movfw PCLATH_TEMP ; context restore movwf PCLATH ; context restore swapf STATUS_TEMP,W ; context restore movwf STATUS ; context restore swapf W_TEMP,F ; context restore swapf W_TEMP,W ; context restore ;clrf PIR1 ;Todos los flancos a 0 bsf INTCON,GIE ;Habilitamos interrupciones return ;*************************************************************** ;CONTROL DES/HABILITAR INTERRUPCIONES DE CONTROL (AD,TMR0,TMR2) ;*************************************************************** ;Deshabilitar interrupciones (AD,TMR0,TMR2)i habilita INT por RS232 DES_GINT DES_AD banksel PIE1 ;Selecciona el banco1 bcf PIE1,ADIE ;Habilita INT por AD DES_PWM bcf PIE1,TMR2IE ;Habilita INT por TMR2 banksel PORTB DES_TR0 bcf INTCON,T0IE ;Deshabilita INT por TMR0 bcf PIR1,ADIF ;flanco de INT AD

Page 69: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

12

bcf PIR1,TMR2IF ;flanco de INT TMR2 bcf INTCON,T0IF ;flanco de INT TMR0 bcf PIR1,RCIF ;flanco de INT RS232 return ;Habilitar interrupciones (AD,TMR0,TMR2) EN_GINT nop HI_AD banksel PIE1 ;Selecciona el banco1 bsf PIE1,ADIE ;Habilita INT por AD HI_PWM bsf PIE1,TMR2IE ;Habilita INT por TMR2 banksel PORTB HI_TR0 bsf INTCON,T0IE ;Permitir INT por TMR0 return

Page 70: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

13

5.FUNCIONES MATEMATICAS ;*********************************************************** ; FUNCIONES MATEMATICAS ;*********************************************************** ;1-Macro para MUL0808U ;2-MUL0808U multiplica 8y8 bits AARGB0 X BARGB0 = AARGB0_AARGB1_AARGB2 ;3-Macro para MUL1608U ;4-MUL1608U multiplica 16y8 bits ;5-Macro para MUL1515U ;6-MUL1515U multiplica 15y15 bits ;7-Macro para DIV2416U ;8-DIV2416U divide 24y16bits ;9-SUB1616U resta 16y16 bits ;Rutina UMUL1608L ; Max Timing: 2+13+6*15+14 = 119 clks ; Min Timing: 2+7*6+5+4 = 54 clks ; PM: 26 DM: 7 UMUL1608L MOVLW 0x08 MOVWF LOOPCOUNT LOOPUM1608A RRF BARGB0, F BTFSC _C GOTO LUM1608NAP DECFSZ LOOPCOUNT, F GOTO LOOPUM1608A CLRF AARGB0 CLRF AARGB1 RETLW 0x00 LUM1608NAP BCF _C GOTO LUM1608NA LOOPUM1608 RRF BARGB0, F BTFSS _C GOTO LUM1608NA MOVF TEMPB1,W ADDWF AARGB1, F MOVF TEMPB0,W BTFSC _C INCFSZ TEMPB0,W ADDWF AARGB0, F LUM1608NA RRF AARGB0, F RRF AARGB1, F RRF AARGB2, F DECFSZ LOOPCOUNT, F GOTO LOOPUM1608 return ;********************************************************************************************** ;********************************************************************************************** ; 16x8 Bit Unsigned Fixed Point Multiply 16x8 -> 24 ; Input: 16 bit unsigned fixed point multiplicand in AARGB0 ; 8 bit unsigned fixed point multiplier in BARGB0 ; Use: CALL FXM1608U ; Output: 24 bit unsigned fixed point product in AARGB0 ; Result: AARG <-- AARG x BARG

Page 71: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

14

; Max Timing: 5+119+2 = 126 clks ; Min Timing: 5+54 = 59 clks ; PM: 5+26+1 = 31 DM: 7 MUL1608U CLRF AARGB2 ; clear partial product MOVF AARGB0,W MOVWF TEMPB0 MOVF AARGB1,W MOVWF TEMPB1 call UMUL1608L RETLW 0x00 ; RUTINA UDIV1616L ; restore = 23 clks, nonrestore = 17 clks ; Max Timing: 2+15*23+22 = 369 clks ; Min Timing: 2+15*17+16 = 273 clks ; PM: 24 DM: 7 UDIV1616L MOVLW .16 MOVWF LOOPCOUNT LOOPU1616 RLF AARGB0,W RLF REMB1, F RLF REMB0, F MOVF BARGB1,W SUBWF REMB1, F MOVF BARGB0,W BTFSS _C INCFSZ BARGB0,W SUBWF REMB0, F BTFSC _C GOTO UOK66LL MOVF BARGB1,W ADDWF REMB1, F MOVF BARGB0,W BTFSC _C INCFSZ BARGB0,W ADDWF REMB0, F BCF _C UOK66LL RLF AARGB1, F RLF AARGB0, F DECFSZ LOOPCOUNT, F GOTO LOOPU1616 return ;********************************************************************************************** ;********************************************************************************************** ; 16/16 Bit Unsigned Fixed Point Divide 16/16 -> 16.16 ; Input: 16 bit unsigned fixed point dividend in AARGB0, AARGB1 ; 16 bit unsigned fixed point divisor in BARGB0, BARGB1 ; Use: CALL FXD1616U ; Output: 16 bit unsigned fixed point quotient in AARGB0, AARGB1 ; 16 bit unsigned fixed point remainder in REMB0, REMB1 ; Result: AARG, REM <-- AARG / BARG ; Max Timing: 2+369+2 = 373 clks ; Min Timing: 2+273+2 = 277 clks ; PM: 2+24+1 = 27 DM: 7 DIV1616U CLRF REMB0 CLRF REMB1 call UDIV1616L RETLW 0x00

Page 72: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

15

;**************************************************************************** ; MACRO PARA MULTIPLICACION 8x8 bits sin signo ;**************************************************************************** ; Max Timing: 3+12+6*8+7 = 70 clks ; Min Timing: 3+7*6+5+3 = 53 clks ; PM: 19 DM: 4 ;Variables: LOOPCOUNT,AARGB0,BARGB0,AARGB0,AARGB1 UMUL0808L MOVLW 0x08 MOVWF LOOPCOUNT MOVF AARGB0,W LOOPUM0808A RRF BARGB0,F BTFSC STATUS,C GOTO LUM0808NAP DECFSZ LOOPCOUNT,F GOTO LOOPUM0808A CLRF AARGB0 RETLW 0x00 LUM0808NAP BCF STATUS,C GOTO LUM0808NA LOOPUM0808 RRF BARGB0,F BTFSC STATUS,C ADDWF AARGB0,F LUM0808NA RRF AARGB0,F RRF AARGB1,F DECFSZ LOOPCOUNT,F GOTO LOOPUM0808 return ;**************************************************************************** ; FUNCION MUL8X8U ;**************************************************************************** ; 8x8 Bit Unsigned Fixed Point Multiply 8x8 -> 16 ; Input: 8 bit unsigned fixed point multiplicand in AARGB0 ; 8 bit unsigned fixed point multiplier in BARGB0 ; Use: CALL FXM0808U ; Output: 8 bit unsigned fixed point product in AARGB0 ; Result: AARG <-- AARG x BARG ; Max Timing: 1+70+2 = 73 clks ; Min Timing: 1+53 = 54 clks ; PM: 1+19+1 = 21 DM: 4 MUL0808U CLRF AARGB1 ; clear partial product call UMUL0808L RETLW 0x00 ;RUTINA UMUL1616L ; Max Timing: 2+13+6*15+14+2+7*16+15 = 248 clks ; Min Timing: 2+7*6+5+1+7*6+5+4 = 101 clks ; PM: 51 DM: 9 UMUL1616L MOVLW 0x08 MOVWF LOOPCOUNT LOOPUM1616A

Page 73: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

16

RRF BARGB1, F BTFSC _C GOTO ALUM1616NAP DECFSZ LOOPCOUNT, F GOTO LOOPUM1616A MOVWF LOOPCOUNT LOOPUM1616B RRF BARGB0, F BTFSC _C GOTO BLUM1616NAP DECFSZ LOOPCOUNT, F GOTO LOOPUM1616B CLRF AARGB0 CLRF AARGB1 RETLW 0x00 BLUM1616NAP BCF _C GOTO BLUM1616NA ALUM1616NAP BCF _C GOTO ALUM1616NA ALOOPUM1616 RRF BARGB1, F BTFSS _C GOTO ALUM1616NA MOVF TEMPB1,W ADDWF AARGB1, F MOVF TEMPB0,W BTFSC _C INCFSZ TEMPB0,W ADDWF AARGB0, F ALUM1616NA RRF AARGB0, F RRF AARGB1, F RRF AARGB2, F DECFSZ LOOPCOUNT, F GOTO ALOOPUM1616 MOVLW 0x08 MOVWF LOOPCOUNT BLOOPUM1616 RRF BARGB0, F BTFSS _C GOTO BLUM1616NA MOVF TEMPB1,W ADDWF AARGB1, F MOVF TEMPB0,W BTFSC _C INCFSZ TEMPB0,W ADDWF AARGB0, F BLUM1616NA RRF AARGB0, F RRF AARGB1, F RRF AARGB2, F RRF AARGB3, F DECFSZ LOOPCOUNT, F GOTO BLOOPUM1616 return ;********************************************************************************************** ;********************************************************************************************** ; 16x16 Bit Unsigned Fixed Point Multiply 16x16 -> 32 ; Input: 16 bit unsigned fixed point multiplicand in AARGB0 ; 16 bit unsigned fixed point multiplier in BARGB0 ; Use: CALL FXM1616U ; Output: 32 bit unsigned fixed point product in AARGB0

Page 74: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

17

; Result: AARG <-- AARG x BARG ; Max Timing: 6+248+2 = 256 clks ; Min Timing: 6+101 = 107 clks ; PM: 6+51+1 = 58 DM: 9 ; ;Cuidado!!!! ;AH,AL x BH,BL = Z3,Z2,Z1,Z0 ;AARGB0,AARGB1 x BARGB0,BARGB1 = AARGB0,AARGB1,AARGB2,AARGB3 MUL1616U CLRF AARGB2 ; clear partial product CLRF AARGB3 MOVF AARGB0,W MOVWF TEMPB0 MOVF AARGB1,W MOVWF TEMPB1 call UMUL1616L RETLW 0x00 ;**************************************************************************** ; FUNCION RESTA 16-16 bits ;**************************************************************************** ;Result: AARG - BARG = AARG SUB1616U MOVF BARGB1,W SUBWF AARGB1,F MOVF BARGB0,W BTFSS _C INCFSZ BARGB0,W SUBWF AARGB0,F return ;RUTINA UDIV2416L ; Max Timing: 16+6*22+21+21+6*22+21+21+6*22+21+8 = 525 clks ; Min Timing: 16+6*21+20+20+6*21+20+20+6*21+20+3 = 497 clks ; PM: 14+31+27+31+27+31+8 = 169 DM: 8 UDIV2416L CLRF TEMP RLF AARGB0,W RLF REMB1, F MOVF BARGB1,W SUBWF REMB1, F MOVF BARGB0,W BTFSS _C INCFSZ BARGB0,W SUBWF REMB0, F CLRW BTFSS _C MOVLW 1 SUBWF TEMP, F RLF AARGB0, F MOVLW 7 MOVWF LOOPCOUNT LOOPU2416A RLF AARGB0,W RLF REMB1, F RLF REMB0, F RLF TEMP, F MOVF BARGB1,W BTFSS AARGB0,LSB GOTO UADD46LA SUBWF REMB1, F

Page 75: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

18

MOVF BARGB0,W BTFSS _C INCFSZ BARGB0,W SUBWF REMB0, F CLRW BTFSS _C MOVLW 1 SUBWF TEMP, F GOTO UOK46LA UADD46LA ADDWF REMB1, F MOVF BARGB0,W BTFSC _C INCFSZ BARGB0,W ADDWF REMB0, F CLRW BTFSC _C MOVLW 1 ADDWF TEMP, F UOK46LA RLF AARGB0, F DECFSZ LOOPCOUNT, F GOTO LOOPU2416A RLF AARGB1,W RLF REMB1, F RLF REMB0, F RLF TEMP, F MOVF BARGB1,W BTFSS AARGB0,LSB GOTO UADD46L8 SUBWF REMB1, F MOVF BARGB0,W BTFSS _C INCFSZ BARGB0,W SUBWF REMB0, F CLRW BTFSS _C MOVLW 1 SUBWF TEMP, F GOTO UOK46L8 UADD46L8 ADDWF REMB1, F MOVF BARGB0,W BTFSC _C INCFSZ BARGB0,W ADDWF REMB0, F CLRW BTFSC _C MOVLW 1 ADDWF TEMP, F UOK46L8 RLF AARGB1, F MOVLW 7 MOVWF LOOPCOUNT LOOPU2416B RLF AARGB1,W RLF REMB1, F RLF REMB0, F RLF TEMP, F MOVF BARGB1,W BTFSS AARGB1,LSB GOTO UADD46LB SUBWF REMB1, F MOVF BARGB0,W BTFSS _C INCFSZ BARGB0,W SUBWF REMB0, F CLRW BTFSS _C MOVLW 1 SUBWF TEMP, F GOTO UOK46LB

Page 76: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

19

UADD46LB ADDWF REMB1, F MOVF BARGB0,W BTFSC _C INCFSZ BARGB0,W ADDWF REMB0, F CLRW BTFSC _C MOVLW 1 ADDWF TEMP, F UOK46LB RLF AARGB1, F DECFSZ LOOPCOUNT, F GOTO LOOPU2416B RLF AARGB2,W RLF REMB1, F RLF REMB0, F RLF TEMP, F MOVF BARGB1,W BTFSS AARGB1,LSB GOTO UADD46L16 SUBWF REMB1, F MOVF BARGB0,W BTFSS _C INCFSZ BARGB0,W SUBWF REMB0, F CLRW BTFSS _C MOVLW 1 SUBWF TEMP, F GOTO UOK46L16 UADD46L16 ADDWF REMB1, F MOVF BARGB0,W BTFSC _C INCFSZ BARGB0,W ADDWF REMB0, F CLRW BTFSC _C MOVLW 1 ADDWF TEMP, F UOK46L16 RLF AARGB2, F MOVLW 7 MOVWF LOOPCOUNT LOOPU2416C RLF AARGB2,W RLF REMB1, F RLF REMB0, F RLF TEMP, F MOVF BARGB1,W BTFSS AARGB2,LSB GOTO UADD46LC SUBWF REMB1, F MOVF BARGB0,W BTFSS _C INCFSZ BARGB0,W SUBWF REMB0, F CLRW BTFSS _C MOVLW 1 SUBWF TEMP, F GOTO UOK46LC UADD46LC ADDWF REMB1, F MOVF BARGB0,W BTFSC _C INCFSZ BARGB0,W ADDWF REMB0, F CLRW BTFSC _C MOVLW 1 ADDWF TEMP, F

Page 77: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

20

UOK46LC RLF AARGB2, F DECFSZ LOOPCOUNT, F GOTO LOOPU2416C BTFSC AARGB2,LSB GOTO UOK46L MOVF BARGB1,W ADDWF REMB1, F MOVF BARGB0,W BTFSC _C INCFSZ BARGB0,W ADDWF REMB0, F UOK46L return ;********************************************************************************************** ;********************************************************************************************** ; 24/16 Bit Unsigned Fixed Point Divide 24/16 -> 24.16 ; Input: 24 bit unsigned fixed point dividend in AARGB0, AARGB1,AARGB2 ; 16 bit unsigned fixed point divisor in BARGB0, BARGB1 ; Use: CALL FXD2416U ; Output: 24 bit unsigned fixed point quotient in AARGB0, AARGB1,AARGB2 ; 16 bit unsigned fixed point remainder in REMB0, REMB1 ; Result: AARG, REM <-- AARG / BARG ; Max Timing: 2+525+2 = 529 clks ; Max Timing: 2+497+2 = 501 clks ; PM: 2+169+1 = 172 DM: 8 DIV2416U CLRF REMB0 CLRF REMB1 call UDIV2416L RETLW 0x00 ;********************************************************************************************** ; RESTA CON SIGNO PARA EL CONTROL ;********************************************************************************************** ADD16 movf BARGB1,w addwf AARGB1,F btfsc STATUS,C incf AARGB0,F movf BARGB0,w addwf AARGB0,F return RES16S comf BARGB0,F ;Complemento de BARG comf BARGB1,F movlw .1 addwf BARGB1,F ;+1 btfsc STATUS,C incf BARGB0,F call ADD16 return

Page 78: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

21

6.FUNCIONES PWM ;*********************************************************** ; FUNCIONES PWM ;*********************************************************** ;1-CNF_PWM (Configura las salidas PWM) ;2-INT_TMR2 (SERVICIO DE INTERRUPCION TMR2) (Carga el nuevo valor del duty) ;*********************************************************** ; FUNCION CNFPWM ;*********************************************************** ;Configuracion de las salidas PWM ; ;CCP1CON =|---|---|CCPxX|CCPxY|CCPxM3|CCPxM2|CCPxM1|CCPxM0| CNF_PWM banksel T2CON movlw b'00000010' movwf T2CON ;T2 off,prescaler 1:16 clrf TMR2 ;Timer2=0 movlw 0x0F movwf CCP2CON ;CCP1 Modo PWM , DC1B<1:0>=(0,0) clrf CCPR2L ;DC1B<9:2>=(0,0,0,0,0,0,0,0) banksel TRISC movlw b'11111001' ;RC1,RC2 Salidas PWM addwf TRISC,f ;T(periodo)=(PIR2+1)*4*Tosc*TMR2prescale ----(Cristal quarzo = 3,6864 MHz, Tosc= 0,27 us) movlw .255 movwf PR2 ;T=periodo(1kHz)=4,402 ms (REAL ? ) bcf PIE1,TMR2IE ;Deshabilita INT por TMR2 banksel PORTB ;(Bank 0) bsf T2CON,TMR2ON ;TMR2 activado bcf PIR1,TMR2IF ;flanco de INT TMR2 return ;*********************************************************** ; FUNCION REODC ;*********************************************************** ;Reordena los bits del DUTY para poderlos entrar en CCP2CON y CCPR2L ;Ce copia DUTY en C_DC se ordena (modificando C_DC) y se obtiene R_DC REODC bsf UPD_DC ;FLAG de estado : Actualizando DC (Informa la INT TMR2) movf DUTYH,w ;Hacemos una copia para no modificar el valor inicial movwf C_DCH movf DUTYL,w movwf C_DCL clrf R_DCH ;Borra los registros clrf R_DCL rrf C_DCL,f ; Inserta bit 0 y 1 de C_DCL y los coloca in 4 y 5 de R_DCL btfss STATUS,C goto CK_b5

Page 79: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

22

movlw 0x10 movwf R_DCL CK_b5 rrf C_DCL,f btfss STATUS,C goto CAL_DH movlw 0x20 iorwf R_DCL,f ;Hasta aqui se pasa los dos LSB en posicion 5:4 de DUTYL CAL_DH movlw 0x3F ;Borra realimentaciones del carry andwf C_DCL,f rlf C_DCH,f ;Seis desplazamientos (Left) rlf C_DCH,f rlf C_DCH,f rlf C_DCH,f rlf C_DCH,f rlf C_DCH,f movlw 0xC0 andwf C_DCH,f ;Borra realimentaciones del carry movf C_DCH,w ;Llenamos los 2 MSB en C_DCL iorwf C_DCL,f movf C_DCL,w movwf R_DCH ;Se llena la parte alta del DUTY 8 MSB bcf UPD_DC ;FLAG de estado : FIN actualizacion del DC (Informa la INT TMR2) return ;*********************************************************************************************; FUNCION FTMR2 (INT) ;*********************************************************************************************;Carga el nuevo Duty cicle y permite nuevas interrupciones ;Duty = CCPR1L:CCP1CON<5:4> * Tosc * TMR2prescaler INT_TMR2 bsf INIPER ;Flanco para permitir el inicio de conversion AD (indica principio de periodo) decfsz NPER,f ;Decrementa el número de periodos escaneados goto CK_DC bsf ULPER ;Consideramos ultimo periodo para la ponderacion del Shunt CK_DC btfsc UPD_DC ;Comprobamos si la actualizacion del DUTY esta en curso goto FIN_IT2 movlw 0x30 ;Aseguramos que DUTYL no graba bits de configuracion (mascara) andwf R_DCL,f movf R_DCL,w ;2 LSB CCP1CON <5:4> "Los bits bajos pertenecen a la configuracion" iorwf CCP2CON,f movf R_DCH,w movwf CCPR2L ;8 MSB CCPR2L FIN_IT2 bcf PIR1,TMR2IF ;Limpiamos el flanco de int TMR2 Return

Page 80: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

23

7.FUNCIONES PARA LA TRANSMISION VIA RS-232 ;*************************************************************************** ; FUNCIONES PARA LA TRANSMISION VIA RS-232 ;*************************************************************************** ;Funciones asociadas: ;CNF_RS (Configuracion para la comunicacion serie) ;ENVIA (Envia lo que contenga DATO) ;RECINT (Interrupcion por recepcion) ;*************************************************************************** ; FUNCION DE CONFIGURACION RS-232 (CNFSER) ;*************************************************************************** CNF_RS banksel TRISC ;BANK 1 movlw b'10000000' iorwf TRISC,f ;Configuro RC7 como entrada movlw b'10111111' addwf TRISC,f ;Configuro RC6 como salida ; TXSTA =|CSRC|TX9|TXEN|SYNC|---|BRGH|TRMT|TX9D| movlw .23 ; 9600 baudios @ 3.6864 MHz, BRGH = 1 movwf SPBRG movlw 0x24 ; Comunicacion Asincrona USART,BRGH=1,TXEN=1 movwf TXSTA bsf PIE1,RCIE ; Habilita INT por RS232 banksel RCSTA ;BANK 0 ; RCSTA =|SREN|RX9|SREN|CREN|ADDEN|FERR|OERR|RX9D| movlw 0x90 ;Recepcion por interrupcion,SREN=1,CREN=1 movwf RCSTA bsf INTCON,PEIE ;Habilitamos interrupciones de perifericos return ;*************************************************************************** ; INTERRUPCION POR RECEPCION O FIN DE TRANSMISION (RSINT) ;*************************************************************************** ;Inicializaciones necesarias; RXreg=0;N_DAT=0;FLAG_lee_cmd=0;FLAG_new_cmd=0 RSrec banksel PORTB ;Seleccion del banco 0 movfw RCREG movwf RXreg ; guarda el byte recibido en RXreg btfsc FLAG_new_cmd ;Si aun no se ha ejecutado el comando anterior goto RX_FIN ;no escucha nuevas propuestas movf N_DAT,w ;Mira si es comando o datos btfss STATUS,Z ;(Si N_DAT = 0 es un nuevo comando) goto RX_1DAT ;_______NUEVO COMANDO RECIBIDO___________________________________________________________ movf RXreg,w ;El primer byte recibido es el comando.

Page 81: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

24

movwf CTLRS ;(los bytes 0-3 contienen el Identificador del comando) movf RS_TIMEOUT,w ;Cargamos el timeout de transmision de comando movwf TIM3 bsf FLAG_lee_cmd ;Consideramos inicio de comado (empieza la cuenta para el timeout) T_COM1 btfsc T_COMND ;(T_COMND = 0 => TIPO DE COMANDO 1) --> COMANDO sin datos goto T_COM2 bcf FLAG_lee_cmd ;Consideramos comando leido. bsf FLAG_new_cmd ;Nuevo comando diponible para ejecutar goto RX_FIN T_COM2 ;(T_COMND = 1 =>TIPO DE COMANDO 2) --> COMANDO + 2 Byte de datos movlw .2 ;2 byte de datos a recibir con el tipo de comando 2 movwf N_DAT goto RX_FIN ;_______RECEPCION DE DATOS (PARA T_COM2)_________________________________________ RX_1DAT decfsz N_DAT,w ;Si N_DAT es mayor que 1 saltamos a la rutina RX_2DAT goto RX_2DAT decf N_DAT,f ;Decrementamos contador de bytes leidos movf RXreg,w movwf DATOL ;Coge el Byte bajo bcf FLAG_lee_cmd ;Consideramos comando completo. bsf FLAG_new_cmd ;Nuevo comando diponible para ejecutar goto RX_FIN RX_2DAT decf N_DAT,f ;Guarda el byte alto cuando se esperan 2 bytes de datos movf RXreg,w ;Guardamos el byte alto DATOH movwf DATOH goto RX_FIN RX_FIN ;RCIF se pone a 0 automaticamente al leer RCREG return ;*************************************************************************** ; FUNCION SENDW ;*************************************************************************** SENDW ;banksel TXSTA ;btfss TXSTA,TRMT ; miramos si ha terminado la anterior transmision ;goto $-1 ;banksel PORTB movwf TXREG movlw 0xFF movwf DELAY decfsz DELAY,f goto $-1 return

Page 82: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

25

;*************************************************************************** ; FUNCION EJCMD ;*************************************************************************** ;Ejecucion del comando recibido via RS232 EJCMD movf CTLRS,w ;(los bytes 0-3 contienen el Identificador del comando) movwf COMND movlw 0x0F andwf COMND,f ;Limpia la parte alta btfsc T_COMND ;TIPO DE COMANDO goto T_EJT2 ;_______________________________________________________________________________________ ;COMANDOS TIPO 1 t1_CMD1 decfsz COMND,f ;SI COMND es distinto de 0x01 decrementa y saltamos a COMND2 goto t1_CMD2 movf DUTYH,w ;COMANDO 1 ( ENVIA DUTY ACTUAL ) call SENDW movf DUTYL,w call SENDW goto EJ_FIN t1_CMD2 decfsz COMND,f ;SI COMND no era 0x02 saltamos a COMND3 goto t1_CMD3 movf VADSH,w ;COMANDO 2 ( ENVIA VADS ) call SENDW movf VADSL,w call SENDW goto EJ_FIN t1_CMD3 decfsz COMND,f ;SI COMND no era 0x03 saltamos a COMND4 goto t1_CMD4 movf VADRH,w ;COMANDO 3 ( ENVIA VADR ) call SENDW movf VADRL,w call SENDW goto EJ_FIN t1_CMD4 decfsz COMND,f ;SI COMND no era 0x04 saltamos a COMND5 goto t1_CMD5 movf MEDVSH,w ;COMANDO 4 ( ENVIA MEDVS ) call SENDW movf MEDVSL,w call SENDW goto EJ_FIN t1_CMD5 decfsz COMND,f ;SI COMND no era 0x05 saltamos a COMND6 goto t1_CMD6

Page 83: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

26

movf MEDICH,w ;COMANDO 5 ( ENVIA MEDIC ) call SENDW movf MEDICL,w call SENDW t1_CMD6 decfsz COMND,f ;COMANDO 6 ( ENVIA TEMPERATURA INSTANTANEA ) goto tl_CMD7 movf TINSH,w call SENDW movf TINSL,w call SENDW goto EJ_FIN tl_CMD7 decfsz COMND,f ;COMANDO 7 ( CHQUEA COMUNICACION CON SOFT ) goto t1_CMD8 movlw 0xFF call SENDW movlw 0xFF call SENDW t1_CMD8 decfsz COMND,f ;COMANDO 8 ( PARAR SISTEMA ) goto t1_CMD9 bcf FLAG_new_cmd ;Limpia flanco de nuevo comando recibido ;ya que ha sido ejecutado goto RESET t1_CMD9 decfsz COMND,f ;COMANDO 9 (modo de control del DC Manual) goto EJ_FIN bsf FLAG_manual ;Activa el modo manual de control del Duty movlw 0x02 ;Comando de control Manual del DutyCycle call SENDW movlw 0x02 call SENDW goto EJ_FIN ;_______________________________________________________________________________________ ;COMANDOS TIPO 2 T_EJT2 decfsz COMND,f ;SI COMND es distinto de 0x01 saltamos a COMND2 goto t2_CMD2 t2_CMD1 movf DATOH,w ;(CARGAR NUEVO DUTY = SOLO EN MODO DEBUGGER) movwf DUTYH movf DATOL,w movwf DUTYL call REODC ;Funcion que reordena el DUTY para colocarlo en ;CCPR2L y CCP2CON <5:4> goto EJ_FIN decfsz COMND,f ;SI COMND no era 0x02 saltamos a COMND3 goto EJ_FIN

Page 84: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

27

decfsz COMND,f ;SI COMND es distinto de 0x02 saltamos a EJ_FIN goto EJ_FIN t2_CMD2 movf DATOH,w ;(CARGAR NUEVO T_CONSIGNA ) movwf TCOH movf DATOL,w movwf TCOL bsf FLAG_new_cons ;Flag que indica nueva consigna disponible goto EJ_FIN EJ_FIN bcf FLAG_new_cmd ;Limpia flanco de nuevo comando recibido ;ya que ha sido ejecutado return ;*************************************************************************** ; FUNCION TRANSMISION ;*************************************************************************** ;Transmisiones serie. RSTR bcf PIR1,TXIF ;Limpia el flanco de transmision RS232 return

Page 85: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

28

8.FUNCIONES TMR0 ;*********************************************************** ; FUNCIONES TMR0 ;*********************************************************** ;1-CNF_TMR0 (Configura Timer 0) ;2-INT_TMR2 (SERVICIO DE INTERRUPCION TMR0) ;**************************************************************** ; FUNCION CNF_TMR0 25ms ;**************************************************************** ;Temporización = 4·Tosc·Carga TMR0·Rango Divisor ; 25ms = 4 · 1us (4MHz)·Carga TMR0·256 --> Carga TMR0 = 24,6 -> 25 ; TMR0 = 0x19 CNF_TMR0 banksel OPTION_REG ;Selecciona el Banko 1 movlw b'11010111' ;Preescaler x256 movwf OPTION_REG banksel PORTB movlw 0x50 ;25 en decimal -> 25,6 ms movwf TMR0 bsf INTCON,T0IE ;Habilita INT por TMR0 bcf INTCON,T0IF ;flanco de INT TMR0 return ;**************************************************************** ; FUNCION TMR0 (SERVICIO A LA INTERRUPCION TMR0) ;**************************************************************** ;Rutina de interrupción TMR0 INT_TMR0 STIM2 decfsz C_TIM2,f ;Timer 2 asociado al calculo de TACT goto STIM3 call CTINS ;Calculo de la temperatura actual movf TIM2,w movwf C_TIM2 STIM3 btfss FLAG_lee_cmd ;Si el comando no se recibe en 1 segundo --> TIMEOUT goto SALT decfsz TIM3,f ;TIM3 seteado por recepcion del primer byte de comando goto SALT clrf N_DAT ;Borramos N_DAT y aceptamos nuevos comandos cuando ;se desborda el RS_TIMEOUT SALT bcf INTCON,T0IF ;Borramos el flanco de TMR0 return

Page 86: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

29

9.FUNCION CTINS ;************************************************************************** ; FUNCION CTINS ;************************************************************************** ;Calculo de la temperatura instantanea CTINS movf MEDVSH,w movwf AARGB0 movf MEDVSL,w movwf AARGB1 movlw 0x1B ;27'999 ·· 27 movwf BARGB0 call MUL1608U ;AARGB0_AARGB1 (16b) X BARGB0 (8b) = AARGB0_AARGB1_AARGB2 (32b) (Mates.asm) movf MEDICH,w movwf BARGB0 movf MEDICL,w movwf BARGB1 call DIV2416U ;AARGB_0,AARGB_1,AARGB_2 (24b) / BARGB_0,BRGB_1 (16b) = AARGB_0,AARGB_1,AARGB_2(24b) movf AARGB1,w ;Desplazamiento a 16 bits movwf AARGB0 movf AARGB2,w movwf AARGB1 clrf BARGB0 movlw 0x5E ;Valor 94'373 movwf BARGB1 call SUB1616U movf AARGB0,w movwf TINSH movf AARGB1,w movwf TINSL btfss AARGB0,7 ;Si la resta da negativa TINS = 0 goto FIN_TI movlw 0x00 movwf TINSH movlw 0x00 movwf TINSL FIN_TI btfsc FLAG_manual ;Si esta en modo manual salta el refresco del duty goto FIN_AUT ;****************** MODIFICACIóN DUTY************************* movf TCOH,w ;Temperatura de Consigna movwf AARGB0 movf TCOL,w movwf AARGB1 movf TINSH,w ;Temperatura actual calculada movwf BARGB0 movf TINSL,w

Page 87: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

30

movwf BARGB1 call RES16S ;RESTA CON SIGNO btfsc AARGB0,7 ;Bit de signo ( a 0 INCREMENTA DC, A 1 DECREMENTA DC) goto DEC_DC INC_DC movlw 0x01 addwf DUTYL,f btfss STATUS,C ;Si al incrementar el DUTYL hay carry se incrementa el DUTYH goto FIN_MDC ;y se borra el DUTYL movlw 0x01 addwf DUTYH,f clrf DUTYL DEC_DC decf DUTYL,f btfss STATUS,Z goto FIN_MDC decf DUTYH,f ;Si al decrementar el DUTYL se queda a 0, decrementamos el DUTYH movlw 0xFF ;y cargamos de nuevo el DUTYL a FF movwf DUTYL FIN_MDC call REODC ;Funcion que reordena el DUTY para colocarlo en ;CCPR2L y CCP2CON <5:4> FIN_AUT Return

Page 88: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

31

10. PROGRAMA PRINCIPAL ;*************************************************************************** ; PROGRAMA DE CONTROL DE TEMPERATURA ;*************************************************************************** ;Nombre: Joaquim Solé Figueras LIST P= 16F877 RADIX HEX ;Sistema de numeración hexadecimal INCLUDE "regis877.inc" ;Contiene los registros del PIC16F877 INCLUDE "glovar.inc" ;Variables globales utilizadas ;____________________________________________________________________________________________ ;INICIO DEL CODIGO DE PROGRAMA ORG 0x00 ;Origen memoria de programa goto INICIO ORG 0x04 ;Vector de interrupciones goto TRATINT INCLUDE "f_serie.inc" ;Configura la transmision serie INCLUDE "f_pwm.inc" ;Configura y controla las salidas PWM INCLUDE "f_mates.inc" ;Funciones matemáticas INCLUDE "f_int.inc" ;Salva y restaura contexto en interrupciones INCLUDE "f_tmr0.inc" ;Configuracion del Timer0 INCLUDE "f_ad.inc" ;Configuracion canales de conversion AD INCLUDE "tcal.inc" ;Funciones de calculo de temperatura ;******************************************************************************************** ; INICIALIZACIONES ;******************************************************************************************** INICIO ;Inciializacion de variables y Flags movlw 0x20 movwf TIM2 ;Carga el timer de software 2 _Calculo de Temp. instantanea clrf CTLAD ;Registro de control AD a 0 clrf N_DAT ;Contador de datos a 0 clrf CTLRS ;Incicializacion del registro de control serie clrf CTLINT ;Incicializacion del registro de control de interrupciones clrf INTCON ;Interrupciones y flancos a 0 ;Configuraciones call CNF_AD ;Configura la conversion AD (func_AD.asm) call CNF_TMR0 ;Configuro el TIMER0 call CNF_PWM ;Configura las salidas PWM call CNF_RS ;Configura transmision RS232

Page 89: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

32

;******************************************************************************************** ; PROGRAMA PRINCIPAL ;******************************************************************************************** RESET movlw 0x22 ;Codigo de sistema reiniciado (RESET) call SENDW movlw 0x22 call SENDW INI_CONS bcf T2CON,TMR2ON ;TMR2 desactivado bcf INTCON,GIE ;Deshabilita todas la sinterrupciones call DES_GINT ;Deshabilita interrupciones generales (AD,TMR0,TMR2) bsf INTCON,GIE ;Habilita todas las interrupciones bcf FLAG_manual ;Modo de control Automatico bcf FLAG_new_cons ;FLAG de nueva consigna leida a cero WAIT_CONS btfsc FLAG_new_cmd ;Testeamos si hemos recibido un nuevo comando a ejecutar call EJCMD btfsc FLAG_new_cons ;Si recibe nueva consigna inicia control goto INI_CONTROL btfss FLAG_manual ;Si esta en modo manual inicia control goto WAIT_CONS INI_CONTROL bcf FLAG_new_cmd ;Limpia flanco de nuevo comando recibido call EN_GINT ;Habilita interrupciones generales (AD,TMR0,TMR2) movlw 0x00 ;Inicialización del DUTY al mínimo (para detectar presencia de sensor) movwf DUTYH movlw 0x40 movwf DUTYL call REODC ;Funcion que reordena el DUTY para colocarlo en ;CCPR2L y CCP2CON <5:4> bsf T2CON,TMR2ON ;TMR2 activado movlw 0xFF movwf C_ESPE W_ESTAB decfsz C_ESPE ;Espera (3*256)*0,25us = 200us goto W_ESTAB ;para que se estabilize el sistema con la consigna por defecto LOOP btfss CONAD_ON ;CONAD_ON = 1 si hay conversion en curso call CNV_AD ;LLeva a cabo las conversiones AD (func_AD.asm) btfsc NEW_VS ;Mira si exizte una nueva conversion de VS en VADS call MVS_PWM ;Calcula la media de VS en PWM btfsc NEW_VR ;Si hay una nueva aduisicion de tension en el shunt call MIC_PWM ;Llamamos a la funcion de calculo de IC btfsc FLAG_new_cmd ;Testeamos si hemos recibido un nuevo comando a ejecutar call EJCMD

Page 90: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

33

goto LOOP ;******************************************************************************************* ; TRATAMIENTO DE INTERRUPCIONES ;******************************************************************************************* TRATINT call ISR ;Salva el contexto; w,PCLATH,FSR,STATUS ;Deshabilita interrupciones btfsc PIR1,RCIF ;Motivo recepcion RS232 call RSrec btfsc INTCON,T0IF ;Motivo del TMR0 call INT_TMR0 btfsc PIR1,TMR2IF ;Motivo de TMTR2 (para PWM) call INT_TMR2 btfsc PIR1,ADIF ;Motivo conversion AD call INT_AD call ISRfin ;Restaura el contexto; w,PCLATH,FSR,STATUS ;Limpia todos los flancos de PIR1 y Habilita interrupciones retfie END

Page 91: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

ANNEX 2

MANUAL D’USUARI DEL PANELL DE CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A

SENSORS DE GASOS

Page 92: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

MANUAL D’USUARI DEL PANELL DE CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS.

El sistema de control de temperatura disposa d’una connexió sèrie que permet a l’usuari controlar i monitoritzar el procés a partir d’un pannell instal·lat en un PC. L’objectiu d’aquest manual és descriure els modes d’operació i la funcionalitat de les finestres i botons que presenta el pannell. El pannell de control té l’aspecte següent:

Page 93: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

Tot seguit es descriuen els modes d’operació i els passos a seguir per executar-los: Mode Automàtic: El mode automàtic permet que l’usuari indiqui una consigna de temperatura entre 0 i 500ºC, i polsant el botó “Mandar Nueva Consigna” l’aparell de control començarà a treballar amb aquesta consigna. Mentre el programa monitoritza cada 2 segons la temperatura interpretada pel microcontrolador en el gràfic central del pannell. Passos a seguir:

1) Seleccionar el port sèrie (COM) on està connectat el mòdul controlador de la finestra “Puerto Serie” i activar-lo utilitzant el botó "Abrir puerto". En cas que el port estigui hàbil, l’icona de sobre el botó es posarà de color verd. En el mateix moment s’ha d’encendre el led vermell disposat en el mòdul indicant que el port funciona correctament.

2) Pot utilitzar el botó “Test de comunicación con el módulo” per verificar que el

mòdul està ben alimentat i el programa de control està funcionant. 3) Finalment cal introduir el valor de temperatura desitjada en la finestra adjunta al

botó “Mandar Nueva Consigna” i polsar-lo. Si es vol parar el control i deixar el sensor sense entrega de potència es pot prémer el botó “Reiniciar el sistema”. També hi ha la possibilitat de assignar una nova consigna directament sense haver d’iniciar o parar el control, simplement introduint, la en la casella i polsant sobre “Mandar Nueva Consigna”.

Mode Manual: El mode Manual està pensat per a depurar o realitzar un control especial ja que no permet determinar la consigna de temperatura sinó directament el “duty-cycle” de la senyal PWM. Aquest mode està protegit amb contrasenya per evitar que algú sense coneixements necessaris l’activi, ja que podria forçar un corrent excessiu i trencar els sensors a controlar. Cal saber que si es força un valor del duty-cycle massa elevat sense fer increments progressius i sense esperar l’adaptació de la temperatura el sensor es pot trencar. La contrasenya és “pic”. Passos a seguir:

1) Seleccionar el port sèrie (COM) on està connectat el mòdul controlador de la finestra “Puerto Serie” i activar-lo utilitzant el botó "Abrir puerto".

En cas que el port estigui hàbil, l’icona de sobre el botó es posarà de color verd. En el mateix moment s’ha d’encendre el led vermell disposat en el mòdul indicant que el port funciona correctament.

Page 94: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

2) Polsar sobre el botó “Modo Manual”. Sortirà un missatge en pantalla demanant que s’introdueixi la contrasenya ( indicada anteriorment).

3) S’habilitarà el botó “ Mandar nuevo Duty” i podrem modificar el valor del duty-

cycle indicant-lo en tant per cent ( entre 6 i 100%) en la finestra adjunta i polsant sobre el botó

Després d’activar el Mode manual també s’habilitarà el botó Realizar anàlisis, que permet realitzar una taula amb els paràmetres llegits pel microcontrolador i els mesurats manualment amb el fi de contrastar-los i caracteritzar el comportament del sensor dins el rang de treball. Aquest anàlisis és semiautomàtic i augmenta en cada pas el duty-cycle anotant el valor dels paràmetres d’interès. Un cop activat aquest mode el botó passa a ser “Parar anàlisis” per aturar el procés. Per sortir del mode manual i habilitar de nou el mode automàtic s’ha de polsar sobre el botó “Reiniciar el sistema”.

Per altra banda tenim una sèrie de botons que es poden polsar en qualsevol dels modes funcionals i queden descrits a continuació: La finestra “ Pannel de Estado”: permet a l’usuari realitzar consultes a temps real dels valors interns de tensió i corrent llegits en el sensor. Cal polsar sobre els botons perquè s’actualitzi el contingut de les finestres: LEE VADS. Ens informa sobre el valor de la tensió en extrems de l’element calefactor en Ton de la senyal PWM. Mostra el valor de la conversió digital i també la tensió en V. LEE MEDVS. Ens informa del valor mig de la tensió en extrems de l’element calefactor calculat pel microcontrolador. LEE VADR. Ens informa sobre el valor de la tensió sobre la resistència Rout associada a l’integrat del Shunt. Mostra el valor digital de la tensió mitja sobre Rout i també el valor en V. MEDIC. Ens informa del corrent mig que circula a través de l’element calefactor calculat pel microcontrolador a partir de la tensió sobre Rout associada al integrat del Shunt. En la finestra de “Comandos Manuales” també tenim el botó “Lee Duty Cycle” que permet mostrar el valor del duty cycle que està imposant el sistema de control. Aquest botó és hàbil en qualsevol dels dos modes funcionals. El botó “Lee temperatura actual” ens informa de la temperatura que interpreta el microcontrolador en mode automàtic. La finestra “transmission série” permet visualitzar el comando enviat junt amb les dades que s’envien o es reben pel canal sèrie. Només és una finestra informativa.

Page 95: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

ANNEX 3

CODI DEL PROGRAMA DE CONTROL PER AL PC ( EN VISUAL BASIC ).

Page 96: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

1

ANNEX 3. CODI EN VISUAL BASIC DEL PANELL DE CONTROL DEL PC Public LASTcomand As Byte ' Copia del comando enviado Public T1_delay, T3_delay As Integer ' variable para la espera del timer1 Public bus_ocupado As Boolean Public Excelfila As Integer Public FLAG_logging As Boolean Public Sub Send_CMD(comando As Byte) Dim TXcom_T1(0) As Byte If (bus_ocupado = False) Then TXcom_T1(0) = comando 'COMANDO 3: LEE VADR ( TIPO 1 ) MSComm1.Output = TXcom_T1 'Lanza la trama por el puerto serie LASTcomand = CInt(comando) bus_ocupado = True Set_serie_Timeout End If End Sub Private Sub Cmd_envia_DC_Click() Dim TXcom_T1 As String Dim Duty As Integer Dim BH As Integer Dim BL As Integer If (bus_ocupado = False) Then If (0 < Val(Txt_envia_DC) < 100) And (Txt_envia_DC <> Empty) Then Duty = (Txt_envia_DC * 1023) / 100 If (Duty > 255) Then BH = Val(Mid(Hex((Txt_envia_DC * 1023) / 100), 1, 1)) Else BH = 0 End If BL = Duty - (BH * 256) bus_ocupado = True Espera (200) 'Espera de 200ms TXcom_T1 = Chr(CInt(&H21)) 'COMANDO ecribe nuevo DUTY (COMANDO TIPO 1) MSComm1.Output = TXcom_T1 'Lanza la trama por el puerto serie Espera (200) 'Espera de 200ms TXcom_T1 = Chr(BH) 'COMANDO ecribe nuevo DUTY (COMANDO TIPO 1) MSComm1.Output = TXcom_T1 'Lanza la trama por el puerto serie

Page 97: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

2

Txt_bH = BH Espera (200) 'Espera de 200ms TXcom_T1 = Chr(BL) 'COMANDO ecribe nuevo DUTY (COMANDO TIPO 1) MSComm1.Output = TXcom_T1 'Lanza la trama por el puerto serie Txt_bL = Hex(BL) bus_ocupado = False Else MsgBox ("Introduce algun duty correcto, en % ") End If End If End Sub Sub Set_serie_Timeout() Timer2.Interval = 1000 Timer2.Enabled = True End Sub Private Sub Cmd_lee_DC_Click() Dim TXcom_T1(0) As Byte TXcom_T1(0) = &H1 MSComm1.Output = TXcom_T1 'Call Send_CMD(&H1) 'COMANDO LEE DUTY 00100001 (COMANDO TIPO 1) End Sub Private Sub Cmd_lee_VADS_Click() Dim comando As Byte Call Send_CMD(&H2) 'COMANDO 2: LEE VADS ( TIPO 1 ) End Sub Private Sub Cmd_lee_VADR_Click() Dim comando As Byte Call Send_CMD(&H3) 'COMANDO 3: LEE VADR ( TIPO 1 ) End Sub Private Sub Cmd_lee_MEDVS_Click() Dim comando As Byte Call Send_CMD(&H4) 'COMANDO 4: LEE MEDVS ( TIPO 1 )

Page 98: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

3

End Sub Private Sub Cmd_MEDIC_Click() Dim comando As Byte Call Send_CMD(&H5) 'COMANDO 5: LEE MEDIC ( TIPO 1 ) End Sub Private Sub Cmd_AnaTemp_Click() Dim col, DutC As Integer Dim comando As Byte Dim Heading(6) As String 'aki vamos a guardar los nombres de los campos que despues pasamos a la funcion Heading(0) = "VADS" Heading(1) = "MEDVS" Heading(2) = "VADR" Heading(3) = "VShunt" Heading(4) = "MEDIC" Heading(5) = "TEMP" Limite_DC = 80 'Determinamos el duty maximo al 80% Call Inicio_Excel 'Llamamos a la funcion que abre el workbook en excel Call Formato_Excel(6, Heading()) 'llamamos a la funcion que da el formato al nuevo workbook objExcel.ActiveCell = "A1" FLAG_logging = True For DutC = 1 To Limite_DC Txt_envia_DC = DutC Call Envia_DC Espera (5000) 'Espera de 5s Call Send_CMD(&H2) 'COMANDO 2: LEE VADS ( TIPO 1 ) Espera (500) 'Espera de 500ms Call Send_CMD(&H3) 'COMANDO 3: LEE VADR ( TIPO 1 ) Espera (500) 'Espera de 500ms Call Send_CMD(&H4) 'COMANDO 4: LEE MEDVS ( TIPO 1 ) Espera (500) 'Espera de 500ms Call Send_CMD(&H5) 'COMANDO 5: LEE MEDIC ( TIPO 1 ) Espera (500) 'Espera de 500ms objExcel.Cells(Excelfila, 1).Value = InputBox("Introduzca la temperatura del sensor (ºC)")

Page 99: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

4

Excelfila = Excelfila + 1 Next DutC FLAG_logging = False End Sub Sub Form_Load() 'INICIALIZACIONES Opt_COM(3) = True Pic_COM.BackColor = RGB(255, 0, 0) End Sub Private Sub Cmd_Act_Click() Dim COM_Port As Integer '____________________________________________________________________________________ ' INICIALIZACION DEL PUERTO SERIE '____________________________________________________________________________________ ' Usar COM1. ' 9600 baudios, paridad par, 8 bits de datos y 1 bit de parada. ' Indicar al control que lea todo el búfer al usar Input. ' Indicar al control que genere un evento cada vez que recibe un byte. ' Fija la recepcion en modo binario ' Abrir el puerto. If (Opt_COM(0) = True) Then COM_Port = 1 ElseIf (Opt_COM(1) = True) Then COM_Port = 2 ElseIf (Opt_COM(2) = True) Then COM_Port = 3 ElseIf (Opt_COM(3) = True) Then COM_Port = 4 End If On Error GoTo CodeError MSComm1.CommPort = COM_Port MSComm1.Settings = "9600,n,8,1" MSComm1.InputLen = 8 MSComm1.RThreshold = 2 MSComm1.InputMode = comInputModeBinary MSComm1.PortOpen = True Pic_COM.BackColor = RGB(0, 255, 0) Exit Sub CodeError:

Page 100: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

5

MsgBox (" El puerto ya estaba abierto") End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False 'Cerrar el puerto serie. End Sub Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent ' Errores Case comBreak ' Se ha recibido una interrupción. Case comEventFrame ' Error de trama Case comEventOverrun ' Datos perdidos. Case comEventRxOver ' Desbordamiento del búfer de recepción. Case comEventRxParity ' Error de paridad. MsgBox "Error de Paridad" Case comEventTxFull ' Búfer de transmisión lleno. Case comEventDCB ' Error inesperado al recuperar DCB. ' Eventos Case comEvCD ' Cambio en la línea CD. Case comEvCTS ' Cambio en la línea CTS. Case comEvDSR ' Cambio en la línea DSR. Case comEvRing ' Cambio en el indicador de llamadas. Case comEvReceive ' Recibido nº SThreshold de caracteres. If MSComm1.InputLen = 8 Then leer ((MSComm1.Input)) End If Exit Sub Case comEvSend ' Hay un SThreshold caracteres en el búfer de transmisión. Case comEvEOF ' Se ha encontrado un carácter EOF en la entrada. End Select 'Stop End Sub Sub leer(m() As Byte) Dim b() As Byte Dim CALC_aux As Double For I = LBound(m) To UBound(m) l = l + 1 ReDim Preserve b(1 To l) b(l) = m(I) Next I If l = 2 Then If LASTcomand = 1 Then 'Txt_lee_DC = (CInt(b(1)) * 256) + CInt(b(2)) ' text3 = Format(text3, "#,##0.00")

Page 101: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

6

End If If LASTcomand = 2 Then ' VADS Txt_VADS = (CInt(b(1)) * 256 + CInt(b(2))) If FLAG_logging = 1 Then objExcel.Cells(Excelfila, 1).Value = Txt_VADS End If End If If LASTcomand = 3 Then 'VADR Txt_VADR = (CInt(b(1)) * 256 + CInt(b(2))) 'Vshunt Txt_Vshunt = Val(Txt_VADR) * 5 / 1023 Txt_Vshunt = Format(Txt_Vshunt, "#,##0.00") If FLAG_logging = 1 Then objExcel.Cells(Excelfila, 2).Value = Txt_VADR End If End If If LASTcomand = 4 Then 'MEDVS Txt_MEDVS = (CInt(b(1)) * 256 + CInt(b(2))) If FLAG_logging = 1 Then objExcel.Cells(Excelfila, 3).Value = Txt_MEDVS End If End If If LASTcomand = 5 Then 'MEDIC Txt_MEDIC = (CInt(b(1)) * 256 + CInt(b(2))) If FLAG_logging = 1 Then objExcel.Cells(Excelfila, 4).Value = Txt_MEDIC End If End If Txt_bH = Hex(b(1)) Txt_bL = Hex(b(2)) End If LASTcomand = 0 bus_ocupado = False End Sub Public Sub Espera(T_ms As Integer) T1_delay = False Timer1.Interval = T_ms Timer1.Enabled = True Do While (T1_delay = False) DoEvents

Page 102: CONTROL DE TEMPERATURA AMB MICROCONTROLADOR …deeea.urv.cat/public/PROPOSTES/pub/pdf/745pub.pdf · DISSENY HARDWARE - Descripció del microcontrolador utilitzat. - Sistema i cirquiteria

PFC URV CONTROL DE TEMPERATURA AMB MICROCONTROLADOR PER A SENSORS DE GASOS DE CAPA GRUIXUDA

7

Loop End Sub Private Sub Duty_Click() Dim Trama(0) As Byte 'Trama(0) = Hex(1) Trama(0) = CByte(Text5) 'Valor hexadecimal del byte a enviar MSComm1.Output = Trama End Sub Private Sub Timer1_Timer() T1_delay = 1 End Sub Private Sub Timer2_Timer() If (bus_ocupado = True) Then MsgBox ("No se ha conseguido recibir lo esperado, compruebe la conexion serie") bus_ocupado = False End If Timer2.Enabled = False End Sub