Professional Documents
Culture Documents
ROBERTOTHIELE
digiducha
Termostatodigitalcomcontrolenebuloso
parachuveiroscomsistemadeaquecimentocentral
SOPAULO
2008
JOOPAULOFIORI
ROBERTOTHIELE
digiducha
Termostatodigitalcomcontrolenebuloso
parachuveiroscomsistemadeaquecimentocentral
Monografiaapresentada
EscolaPolitcnicadaUniversidadede
SoPauloparagraduaoem
EngenhariaEltricacomnfaseemComputao
SOPAULO
2008
JOOPAULOFIORI
ROBERTOTHIELE
digiducha
Termostatodigitalcomcontrolenebuloso
parachuveiroscomsistemadeaquecimentocentral
Monografiaapresentada
EscolaPolitcnicadaUniversidadede
SoPauloparagraduaoem
EngenhariaEltricacomnfaseemComputao
readeConcentrao:
EngenhariadeComputao
Orientador:
Prof.MarcoTlioCarvalhodeAndrade
SOPAULO
2008
FICHACATALOGRFICA
Thiele,Roberto
DIGIDUCHA/J.P.Fiori,R.Thiele
SoPaulo,2008
96p.
TrabalhodeFormaturaEscolaPolitcnicadaUniversidadede
SoPaulo.DepartamentodeEngenhariadeComputaoe
SistemasDigitais.
1.Sistemasdecontrole2.Controleautomtico3.Inteligncia
Artificial4.Microprocessadores
I.Fiori,JooPauloII.UniversidadedeSoPaulo.Escola
Politcnica.DepartamentodeEngenhariadeComputaoe
SistemasDigitaisIII.t.
RESUMO
Nestamonografiaapresentouseummtododecontroleautomticodatemperatura
de chuveiros que possuem sistema de aquecimento central. Nestes sistemas, a
regulagemdetemperaturacomumenterealizadaajustandosedoisregistros,sendo
um de gua quente e o outro de gua fria. A temperatura da mistura de gua
determinadapelaposiodestesdoisregistros.
Omtododecontroleusadonestetrabalho,dotiponebulosoPI,visoualcanarum
controle satisfatrio da temperatura, sem a necessidade de otimizao online das
variveis do controlador, que uma prtica comum nos largamente utilizados
controladoresPID.
Um prottipo do sistema de controle foi implementado. O software de controle
nebuloso foi executado em um microcontrolador, que de acordo com o sinal de
temperatura fornecido por um sensor instalado na mistura d'gua, controlou as
potnciasdeduasbombasdegua(quesimulamosregistrosdeguaquenteede
gua fria), com o intuito de estabilizar a temperatura da mistura d'gua em um
determinadovalordesejado.
ABSTRACT
Inthismonographamethodforautomaticcontrolofwatertemperatureinshowers
with central heating systems was presented. In these systems, the temperature
regulationiscommonlydonebyadjustingtwoseparatetaps,oneforhotwaterand
another for cold water. In this case, the temperature of the water mixture is
determinedbythetwotaps'positions.
Thecontrolmethodused,whichisoftypefuzzyPI,aimedatprovidingasatisfactory
temperaturecontrol,withnoneedtooptimizethecontroller'svariablesonline,which
isacommonpracticeamongthelargerlyusedPIDcontrollers.
Aprototypeofthecontrolsystemwasimplemented.Thefuzzycontroller'ssoftware
wasexecutedonamicrocontrollerwhich,uponreceivingatemperaturesignalfroma
sensor,controlledthepoweroftwowaterpumps(whichsimulatedthehotandcold
taps),soastostabilizethetemperatureofthewatermixtureatadeterminedsetpoint.
Sumrio
Captulo1Introduo......................................................................................................................11
1.1Motivaoejustificativa.........................................................................................................13
1.2Objetivos..................................................................................................................................13
1.3Metodologia............................................................................................................................14
1.4Estruturadotexto.....................................................................................................................15
Captulo2FundamentosTericos..................................................................................................17
2.2Fundamentosdelgicanebulosa.............................................................................................18
2.2.1Conjuntosclssicos.........................................................................................................18
2.2.2Conjuntosnebulosos.......................................................................................................19
2.2.3Operaesemconjuntosnebulosos................................................................................20
2.2.4Variveislingsticaseregrasdeinferncia....................................................................21
2.3Fundamentosdecontrolenebuloso..........................................................................................22
2.3.1Funesdepertinncia.....................................................................................................22
2.3.2Fuzificao.......................................................................................................................23
2.3.3Mecanismodeinferncia.................................................................................................24
2.3.4Defuzificao...................................................................................................................25
Captulo3DefiniodoProblema..................................................................................................27
3.1Consideraessobreinstalaeshidrulicas..........................................................................27
3.2Funotemperatura.................................................................................................................28
3.3Regulagemmanual..................................................................................................................29
3.4Oproblemadoajustedetemperatura.....................................................................................30
3.5OProblemadoajustedevazo...............................................................................................31
Captulo4DesenvolvimentodaSoluo.........................................................................................33
4.1Introduo................................................................................................................................33
4.2Arquiteturadosistema.............................................................................................................34
4.3Hardwaredeinterfacecomousurio......................................................................................38
4.4Hardwaredecontrole...............................................................................................................39
4.5Softwaredeinterfacecomousurio.......................................................................................40
4.6Softwaredecontrole................................................................................................................42
4.6.1Arquiteturadocontroladornebuloso...............................................................................44
4.6.2Funesdepertinnciadocontroladornebuloso.............................................................44
4.6.4Regrasdeinfernciadocontroladornebuloso.................................................................47
4.6.5Fuzificao,infernciaedefuzificao............................................................................51
4.6.6Fluxograma......................................................................................................................58
4.7Funcionalidadesfuturas...........................................................................................................60
Captulo5Prottipoetestes.............................................................................................................61
5.1Hardware..................................................................................................................................62
5.1.1Resistnciaeltricaerecipientes......................................................................................64
5.1.2Kitdidticodo8051eseusperifricos............................................................................64
5.1.3Driversdasbombas..........................................................................................................66
5.2Software...................................................................................................................................67
5.3Resultados................................................................................................................................70
Captulo6ConsideraesFinais......................................................................................................73
6.1Quantoaocumprimentodosobjetivos....................................................................................73
6.2Quantoaodesenvolvimentoesuasdificuldades.....................................................................74
6.3Concluses...............................................................................................................................75
6.4Trabalhosfuturos.....................................................................................................................76
ARefernciasBibliogrficas..........................................................................................................77
BBibliografiaAdicional..................................................................................................................78
CCdigofontedoProttipo...........................................................................................................79
ndicedefiguras
Figura1:Exemplodefunesdepertinncia....................................................................................23
Figura2:Modelodesistemadecontrole...........................................................................................28
Figura3:Ajustemanualdosregistrosdeumchuveiro......................................................................29
Figura4:ComportamentoidealTemperaturavs.Tempo..................................................................30
Figura5:ComportamentotpicoTemperaturavs.Tempo.................................................................31
Figura6:Modelodesistemadecontrole...........................................................................................33
Figura7:Arquiteturageraldohardware............................................................................................35
Figura8:Arquiteturageraldosoftware.............................................................................................36
Figura9:Fluxogramageraldosoftware............................................................................................37
Figura10:Arquiteturadohardwaredeinterfacecomousurio........................................................38
Figura11:Arquiteturadohardwaredecontrole................................................................................39
Figura12:Arquiteturadosoftwaredeinterfacecomousurio.........................................................40
Figura13:Fluxogramadosoftwaredeinterfacecomousurio........................................................41
Figura14:Arquiteturadosoftwaredecontrole.................................................................................43
Figura15:Arquiteturadocontroladornebuloso................................................................................44
Figura16:Funesdepertinnciadoerro.........................................................................................45
Figura17:Funesdepertinnciadavariaodoerro......................................................................45
Figura18:Funesdepertinnciadavariaodaposiodoregistroquente..................................46
Figura19:Funesdepertinnciadavariaodaposiodoregistrofrio.......................................46
Figura20:Fuzificaodoerro...........................................................................................................52
Figura21:Fuzificaodavariaodoerro........................................................................................52
Figura22:Funesdepertinnciaresultantes....................................................................................54
Figura23:Defuzificaopelomtododocentrodemassa................................................................55
Figura24:Defuzificaopelomtododocentrodassomas..............................................................55
Figura25:Fuzificao,infernciaedefuzificao.............................................................................57
Figura26:Fluxogramadosoftwaredecontrole................................................................................58
Figura27:Exemplodefuncionamentodocontroledosregistros......................................................59
Figura28:Analogiaentreainstalaohidrulicaresidencialeoequipamentousadonasimulao 62
Figura29:Arquiteturageraldoprottipoquecontrolaoequipamentousadonasimulao............63
Figura30:Recipientedeguaquentecomresistncia.......................................................................64
Figura31:Funcionalidadesdeinteressedokit..................................................................................65
Figura32:ConexesdeinteressedodriverdemotorDC.................................................................66
Figura33:Geraodeduasondaspwmdistintas,defrequnciaiguala100Hz..............................70
Figura34:Grficodatemperaturaemfunodotempo....................................................................71
Figura35:Grficodaspotnciasdasbombasemfunodotempo..................................................72
Figura36:Conversodeumsinalde0a5Vparaumsinalde12a24V.........................................74
10
Captulo1Introduo
Oconceitodeconjuntonebuloso(ou fuzzy, emingls)foiintroduzido,em1965,por
LotfiA.Zadeh(UniversidadedaCalifrnia,Berkeley).Aeleatribudooreconhecimento
como grande colaborador do controle moderno. Em meados da dcada de 60, Zadeh
observou que os recursos tecnolgicos disponveis eram incapazes de automatizar as
atividades relacionadas a problemas de natureza industrial, biolgica ou qumica, que
compreendessem situaes ambguas, no passveis de processamento atravs da lgica
computacionalfundamentadanalgicabooleana.Procurandosolucionaressesproblemaso
Prof.Zadehpublicouem1965umartigoresumindoosconceitosdosconjuntosnebulosos,
revolucionandooassuntocomacriaodesistemasnebulosos[7RobertJMarks,1994].
A lgica nebulosa baseada na teoria dos conjuntos nebulosos. Esta uma
generalizaodateoriadosconjuntostradicionais(ouclssicos)afimdeestenderalimitada
classificaoverdadeirooufalsodalgicaclssica.Tradicionalmente,umaproposio
lgica tem dois extremos: completamente verdadeiro ou completamente falso.
Entretanto,nalgicanebulosa,umapremissavariaemgraudeverdadede0a1,oqueleva
aserparcialmenteverdadeiraouparcialmentefalsa[1Driankovetal.,1995].
Em1974,oProf.Mamdani,doQueenMaryCollege,UniversidadedeLondres,aps
inmerastentativasfrustradasemcontrolarumamquinaavaporcomtiposdistintosde
controladores,incluindooPID,somenteconseguiufazloatravsdaaplicaodocontrole
nebuloso[7RobertJMarks,1994].
Esse sucesso serviu de alavanca para muitas outras aplicaes, como em 1980, no
controlenebulosodeoperaodeumfornodecimento.Vieramemseguida,vriasoutras
aplicaes,destacandose,porexemplo,oscontroladoresnebulososdeplantasnucleares,
refinarias,processosbiolgicosequmicos,trocadordecalor,mquinadiesel,tratamentode
guaesistemadeoperaoautomticadetrens[5WitoldPedrycz,1993].
Estimuladospelodesenvolvimentoepelasenormespossibilidadesprticasdeaplicaes
que se apresentaram, os estudos sobre sistemas nebulosos e controle de processos
avanaramrapidamente,culminandocomacriaoem1984,daSociedadeInternacionalde
Sistemas Nebulosos, constituda, principalmente, por pesquisadores dos pases mais
avanadostecnologicamente[6ToshiroTeranoetal.,1994].
OssistemasnebulososforamamplamenteignoradosnosEstadosUnidosporqueforam
associados com inteligncia artificial, um campo que periodicamente se obscurecia,
resultandonumafaltadecredibilidadeporpartedaindstria.Apropsitodisto,eapenasa
ttulodeilustrao,maisde30%dosartigosathojepublicadossodeorigemjaponesa.
11
utilizadonaindstria),destacamseoscontroladoresnebulososadaptativoseossistemas
hbridos,quecombinamcontrolenebuloso,redesneuraisaplicadasaocontroleealgoritmos
genticos[7RobertJMarks,1994].
1.1Motivaoejustificativa
NoJapo,omercadodeeletrodomsticoscomcontrolenebulosojbilionrio,eexiste
uma grande tendncia na Europa e nos Estados Unidos de grande crescimento deste
mercadodeeletrodomsticosinteligentesnosprximosanos.Alavadoraderoupasde1
sboto,quecalculaautomaticamenteaquantidadedeguaesaboaserutilizadoparase
obtermximaeficincianalavagem,degrandesucesso noJapo,umexemplodisto.
Eletrodomsticos com controle nebuloso tornaramse sinnimo de sofisticao e alta
tecnologia[1Driankovetal.,1995].
Vriosaspectostornaminteressantesparaoconsumidorousodeumtermostatodigital
no sistema de chuveiro residencial. Tal sistema pode proporcionar um aumento na
qualidadedevidadousurio,poisaexperinciadetomarumaduchatornasemaisprticae
agradvel,principalmenteparaidososoupessoasportadorasdenecessidadesespeciais.A
possibilidade de segurana contra queimaduras acidentais em crianas tambm um
diferencial.NosEstadosUnidosacontecemcercade3800ferimentose34mortesporano,
devidoaacidentesenvolvendotemperaturaelevadadaguadochuveiro [U.S.Consumer
ProductSafetyCommission: www.cpsc.gov]. Apossibilidadedeinterromperofluxode
gua (e retornlo com facilidade) para ensaboarse durante a ducha, pode evitar o
desperdciodegua,eassimincentivarumautilizaoecologicamentecorretadochuveiro.
Finalmente,talsistemaoferecesofisticaoemodernidadeparaousurio,eumpassorumo
residncia inteligente, tendncia de automao residencial, na qual todos os
componentesdaresidnciautilizadospelomoradorsocomputadorizados.
1.2Objetivos
Oobjetivodestetrabalhofoidesenvolverumcontroladornebulosoparaaregulagem
automticadatemperatura(cujovalordesejadofornecidopelousurio)edavazo(cujo
13
valorfornecidode1,2ou3)daguaemchuveiros,instaladoseminstalaeshidrulicas
residenciais tpicas, com fornecimento de gua fria e quente por meio de tubulaes
distintas(isto,comsistemadeaquecimentocentral).Osistemadecontrolefoiprojetado
parapossuirasseguintescaractersticas:
ajusteautomticodatemperatura
ajusteautomticodavazo
possibilidadedealteraratemperaturadesejadacomosistemaligado
possibilidadedealteraravazodesejadacomosistemaligado
sensibilidadeperturbaesexternas(exemplo:variaesnapressodastubulaes)
1.3Metodologia
ApesquisabibliogrficafoirealizadanabibliotecadeEngenhariaEltricadaEscola
Politcnica,ondediversoslivrosreferentesalgicanebulosaecontrolenebulosoforam
consultados.Naopiniodosautores,omelhorlivrodisponvel(omaiscompleto,didticoe
matematicamenterigoroso)nabiblioteca[1Driankovetal.,1995].Amaiorpartedesta
monografiasebaseiaemidiasextradasdestelivroede[3ZhiqiangGaoetal.].Todasas
outrasbibliografiasforampuramentecomplementaresnaelaboraodestetrabalho.
14
Diversastcnicasforamutilizadasnodesenvolvimentodestetrabalho.Fluxogramaspara
descreverosalgoritmosutilizadosediagramasdecasodeusoparadescreverasinterfaces
homemmquina foram elaborados. Foram utilizadas tcnicas de programao para o
microcontrolador 8051 e seus perifricos, utilizando o paradigma de programao
estruturadanalinguagemC.TcnicasdegeraodeondasPWMparaocontroledemotores
DCtambmforamutilizadas.
Nodesenvolvimentodosoftwarefoiutilizadoomtodo topdown. Primeiramenteo
sistema foidefinidode umaforma geral,especificandoseasentradase assadas.Este
sistemafoientodivididoemsubsistemas(interfacehomemmquina,controlador,etc)
que por sua vez tambm foram divididos em sistemas menores e assim por diante. Os
sistemas resultantes foram desenvolvidos e testados separadamente. Finalmente estes
pequenossistemas,oumdulos,foramagregadoscomodesenvolvimentodeummdulo
queorquestratodoseles,nolaoprincipaldoprograma.
Osconceitosdotradicionalciclodedesenvolvimentodesoftwareemcascata(waterfall
process)foramutilizados,poisaestruturageraldosoftwareeradebaixacomplexidade.Isto
,depoisqueoscomplexosalgoritmosdecontroleforamprojetados,aimplementaodo
softwarefoibastantesimples,poisenvolviapoucosmdulos.Osseguintesprocessosforam
realizadosduranteodesevolvimento:
1.
2.
3.
4.
5.
Anlisedosrequisitos
Projeto
Programao
Testes
Documentao
1.4Estruturadotexto
Estetrabalhodivideseemseiscaptulos:ocaptulo1descreveotemadestetrabalho.O
captulo 2 trata dos conceitos bsicos da teoria dos conjuntos, de lgica nebulosa e de
controle nebuloso, descrevendo de forma sucinta aspectos relevantes para o projeto e
implementaodecontrolodadoresnebulosos.Ocaptulo3tratadadefiniodoproblema,
15
ondesodescritasconsideraessobreasinstalaeshidrulicas,funesdetemperaturae
regulagem manual do sistema. O captulo 4 trata da descrio funcional do sistema,
detalhando as abordagens utilizadas e suas funcionalidades. O captulo 5 descreve o
prottipo desenvolvido e o resultado dos testes. O captulo 6 conclui o trabalho com
consideraes quanto ao cumprimento dos objetivos propostos, dificuldades no
desenvolvimentodotrabalhoesugestesdedesenvolvimentosfuturos.
16
Captulo2FundamentosTericos
Nossistemasdecontroleemengenhariaexistemduasfontesimportantesdeinformao:
sensoreseespecialistas.Ossensoresfornecemmedidasnumricasdevariveisdosistema,
representadaspornmeros.Osespecialistasporsuavez,forneceminstrueslingsticase
descries sobre o sistema, por meio de palavras, como por exemplo pequeno, muito
pequeno,mdio,grande,etc.
Daevidenteimportnciadoconhecimentolingsticodeespecialistasedadificuldade
deimplementlosdeformasistemticaemsoluesdecontroleemengenharia,surgiuo
conceitodesistemaespecialista.Oconceitodesistemaespecialistaaplicadoaocontroleem
malhafechadapode
serdefinidocomosegue[1Driankovetal,1995]:
Umsistemaespecialistaparacontroleemmalhafechadaumsistemadecontroleque
melhoraodesempenho,aconfiabilidadeearobustez docontrole,incorporandoao
sistemaoconhecimentoquenopodeseracomodadonomodeloanalticoemqueo
projeto de um algoritmo de controle baseado. Este conhecimento geralmente
incorporadonaformadeoperaomanualdosistema,ouporalgumaoutraforma
heurstica.
Umcontroladornebuloso,queumtipodeimplementaodeumsistemaespecialista,
utiliza um artifcio matemtico, conhecido como lgica nebulosa, para traduzir o
conhecimentolingsticodeespecialistas emvariveisnumricas,eassimpossibilitar o
controledosistema.Aimportnciadetalcontroladoradvmdaimpossibilidadedetais
conhecimentos lingsticos serem descritos na forma de parmetros PID ou atravs de
equaesdiferenciais,isto,daimpossibilidadedosistemasermodeladomatematicamente.
Emumcontroladornebuloso,taisconhecimentoslingsticossofornecidosnaformade
regrassituao/ao,comoporexemplo:
Seapressoestiveraltaeaumentandodeformalenta,entoaforanegativaede
grandezamdia.
Osistemadecontrolenebulosopodeservistocomoumcasoparticularderedeneural[2
LiXinWang,1994],podendoportantoserotimizadoonline,comagrandevantagemdea
redejestarinicialmente"treinada"comconhecimentolingstico.
17
2.2Fundamentosdelgicanebulosa
2.2.1Conjuntosclssicos
Nateoriaclssicadeconjuntosasduasformasusuais dedefinirumconjuntosoade
enumerar seus elementos e a de usar um predicado P x , que significa que todo
elementodoconjuntotemapropriedade P .Umaoutraformadedefinirumconjunto
clssicopormeiodeumafunodepertinncia A ,comosegue:
Definio:
A : X [0,1] umafunodepertinnciadoconjunto A se,esomentese
paratodo x X
A x =
1 , se x pertence a A
.
0 , se x no pertence a A
Attulodeexemplo,seja A ocojuntodetodososnmerosmpares.Ento A
igual a 1 para todos os mpares e igual a zero para todos os pares, isto ,
A N =N mod 2 .
Comestafunodepertinncia,possvelredefinirasoperaes"complementao",
"interseo"e"unio",comosegue:
Complementaode A ,ou A : A x =1 A x
18
2.2.2Conjuntosnebulosos
Nateoriaclssicadeconjuntos,seja u umelementododomnio U eseja C um
conjuntoarbitrriocontidoem U .Ento,exclusivamente uC ou uC .Nateoria
de conjuntos nebulosos esta propriedade generalizada, de forma que se tivermos um
conjuntonebuloso F ,nonecessrioquesetenhaexclusivamente u F ou uF .
De forma semelhante definio do conjunto clssico por meio de uma funo de
pertinncia, um conjunto nebuloso definido atravs de uma funo de pertinncia
estendida,daseguinteforma.
Definio:
Afunodepertinncia F deumconjuntonebuloso F afuno
F : U [0,1] .
Exemplo:
Suponhaquealgumqueiradefinirumconjuntodenmerosnaturais"pertode6".
Talconjuntopodeserexpressopor
19
Afunodepertinnciadesteconjuntonebulosopodeserexpressapor
6 x =
1
2
1 x6
2.2.3Operaesemconjuntosnebulosos
Asoperaessobreconjuntosnebulosospodemserdefinidasestendendose
asoperaesclssicas,conformeasdefiniesaseguir:
Definio:
Doisconjuntosnebulosossoiguaisse,esomentese
x S : A x = B x .
Definio:
A umsubconjuntode B ( AB )se,esomentese
x X : A x B x .
Aoperaodeinterseo,definidacomonormatriangularouTnorma,satisfazasseguintes
propriedades:
T1: ab = ba
T2: ab c = abc
T3: ac e bd ab cd
T4: a1 = a
20
Aoperaodeunio,definidacomoconormatriangularouSnorma,satisfazasmesmas
propriedadesdainterseo,excetoaltima,quesubstitudapor
S4: a0 = a
Aoperaodecomplementao c satisfazasseguintespropriedades:
c1: c 0 = 1
c2: ab c a c b
c3: c c a = a
Estastrsimportantesoperaesestoresumidasaseguir.
Interseo: x X : A B x = A x B x
Unio: x X : A B x = A x B x
Complementao: x X : A x = c A x
Asoperaesmaiscomumenteusadasemaplicaesdecontrolesoasseguintes:
Interseo: min A x , B x
Unio: max A x , B x
Complementao: 1 A x
2.2.4Variveislingsticaseregrasdeinferncia
Na matemtica, geralmente as variveis assumem valores numricos. Em aplicaes de
lgica nebulosa, variveis no numricas so usadas. Estas variveis so denominadas
variveis lingusticas, e so usadas para facilitar o equacionamento de regras. Por
exemplo,avarivellingusticaerropodeapresentarosvaloreslingusticospequeno,
zerooumuitogrande.
21
Comestasvariveislingusticaseseusrespectivospossveisvaloreslingusticos,podese
definirregrasdeinferncia,naformadeparescondioao,quepodemserdiretamente
extradasdeconhecimentodeoperadoreshumanos.
Asregrasgeralmenteassumemaseguinteforma:
IF VL1 IS x 1 AND VL 2 IS x 2 AND ... VL n IS x n THEN VLC IS y c
importantenotarquenoexisteaexpressoELSE.Todasasregrassotestadas,porque
o erro pode ser grande e pequeno ao mesmo tempo, com graus de pertinncia
possivelmente(masnonecessariamente)distintos.
2.3Fundamentosdecontrolenebuloso
2.3.1Funesdepertinncia
Asfunesdepertinnciasodefinidasparaosvaloreslingusticos(umafunopara
cadavalor),atribuindograusdepertinncia(ougrausdeverdade),dadovaloresnumricos.
Por exemplo, dado a varivel lingustica erro, e seus valores lingusticos negativo
22
Figura1:Exemplodefunesdepertinncia
Nesteexemplo,ovalornumrico3possuigraudepertinncia0,5parapositivoPequenoe
0,5parapositivoMdio.
As funes de pertinncia mais comumente usadas so triangulares, mas funes
trapezoidaisougaussianastambmpodemserusadas.
2.3.2Fuzificao
Afuzificaoconsistenomapeamentodosvaloresnumricosemgrausdepertinncia.
Paraisto,asfunesdepertinnciasousadas.Comoresultado,umdeterminadovalor
lingustico(porexemplo,oerro)terumgraudepertinnciaparacadavalorlingustivoa
eleassociado.
Porexemplo,apsafuzificaodovalornumricodeerrodevalor3,avarivellingustica
erropossuirosseguintesgrausdepertinncia:
{(negativoGrande,0),(negativoMdio,0),(negativoPequeno,0),(Zero,0),(positivo
Pequeno,0.5),(positivoMdio,0.5),(positivoGrande,0)}
23
2.3.3Mecanismodeinferncia
Estaaprincipalpartedeumsistemadecontrolenebuloso,quecombinaosfatosobtidos
dafuzificao(grausdepertinncia)comasregrasdeinferncia.
Dadaumaregranaforma
Noentanto,maisdeumaregrapodetercomoconsequenteovalorlingusticosutilmente
baixa,dandoorigemamaisdeumgraudepertinnciapossvel.Istoresolvidoutilizando
aoperaodeuniodeconjuntosnebulosos,ouseja,escolhendoseomaiorentreosgraus
depertinnciapossveis.
Portanto,apsodisparodevriasregras,avarivellingusticadoconsequenteterumgrau
depertinnciamximoparacadavalorlingustico,ouseja,umlimitesuperiorparaograu
depertinncia.
Utilizando ainda o mesmo exemplo, aps o disparo de vrias regras, poderiase ter os
seguinteslimitessuperioresparaosgrausdepertinnciadavarivellingusticaVariao
dapressodofreio:
VLC sup = { baixa , 0.6 , sutilmente baixa , 0.3 , zero , 0 , sutilmente alta , 0 , alta , 0 }
Cadavarivellingusticaestatribudaaumconjuntonebulosocontnuo(i.e.,funesde
pertinncia).Portanto,aoperaodeunio(mximo)sobretodoouniversodediscursoda
varivel lingustica d origem uma s funo de pertinncia, que assume os valores
mximosemcadapontodetodasasfunesdepertinnciadoconsequente.Estafuno
resultante pode ser vista como a unio (mximo) de todas as funes de pertinncia,
ceifadasnoscorrespondenteslimitessuperiores.
2.3.4Defuzificao
Esteconjuntonebulosocontnuo(uniodasfunesdepertinnciaceifadas)davarivel
lingusticadoconsequentedeveserdealgumaformatransformadoemumvalornumrico,
demodoquesepossatomarumaaotangvel.Atransformaodesteconjuntonebuloso
emumvalornumricoconhecidocomodefuzificao.
Utilizandoaindaoexemploanterior,esupondoqueasfunesdepertinnciabaixae
sutilmentebaixasotriangulares(eprovavelmentesesobrepem),oconjuntonebuloso
resultanteauniodafunodepertinnciatriangularbaixaceifadaem0.6comafuno
triangularsutilmentebaixaceifadaem0.3.Estafunodepertinnciaassumeosvalores
mximosdasduasfunesemcadaponto.
25
Adefuzificaopodeserobtidapeloclculodocentrodemassadestafunoresultante.
Referncia:[1Driankovetal.,1995]
26
Captulo3DefiniodoProblema
3.1Consideraessobreinstalaeshidrulicas
Algumas premissas sobre as instalaes hidrulicas residenciais foram consideradas
nesteprojeto.Considerousequeainstalaopossuiduastubulaes:umaparaguaquente
eaoutraparaguafria.Amisturadaguafriaedaguaquentedochuveiroconvencional
nestetipodeinstalaofeitapormeiodosregistrosdeguaquenteedeguafria,queso
chamadosdemisturadores.Esteajustedeterminaatemperaturaeavazodamisturade
gua. Tambmfoiconsiderado quecadaumadastubulaespossuiumacaracterstica
aproximadamentelineardevazoemfunodaaberturadosregistros,equeainstalao
talqueparaumdeterminadograudeaberturadoregistrodeguaquenteeumdeterminado
graudeaberturadoregistrodeguafria,atemperaturaconstantedecorridoumtempo
suficientementegrande tempo temperatura=constante .Outrahiptesefoideque
atemperaturadaguadochuveiro,resultantedamisturadaguafriaequente,funodo
graudeaberturadoregistrodeguaquente,dograudeaberturadoregistrodeguafriae
dotempo,epossuiasseguintescaractersticas:
nolinearemrelaoaograudeabertura(doregistroquenteoudoregistrofrio),
isto,umaumentodoregistrodeguaquentenonecessariamenteacarretaemum
aumentoproporcionaldatemperaturadagua,ouviceversa(videgrfico3ce3d);
no linear em relao ao tempo, isto , dada uma perturbao nas condies do
sistema, a temperatura se estabiliza em um novo valor decorrido um tempo
suficientementegrande,deformanolinearemfunodotempo(videgrfico3b);
Emumatpicainstalaohidrulicaresidencial,existeumainrciatrmica(atraso)da
guanochuveiro,devidoprincipalmentedistnciaatosistemadeaquecimentocentral,e
perdadecaloraolongodatubulao.
Isto resulta em um atraso na estabilizao da temperatura da gua do chuveiro. No
momentoemqueograudeaberturadealgumdosregistrosalterado,atemperaturada
guatendeaumcertovalor,comumaconstantedetempodependentedascaractersticasda
instalaohidrulica.Deacordocom[3ZhiqiangGaoetal.],umsistemadecontrolepara
umainstalaohidrulicacomoestapodesermodeladodeacordocomafigura2.
27
Figura2:Modelodesistemadecontrole
3.2Funotemperatura
Atemperaturadaguadochuveirodependedetrsvariveis:ograudeaberturado
registrodeguafria f [0,1] ,ograudeaberturadoregistrodeguaquente
q [ 0,1] eotempo t [ 0, [ .
Portanto,atemperaturafunode q , f e t ,epodemosescrever
temperatura = q , f ,t .
Comojfoivisto,aguadaduchapossuiumainrciatrmica(atrasotrmico),com
umaconstantedetempoquevariaparacadainstalaohidrulica.Almdisso,osensorde
temperaturatambmpossuiumatraso.
28
3.3Regulagemmanual
Umchuveiroconvencionalreguladodeformamanual,porumapessoaquecontinuamente
senteatemperaturainstantneadaguacomamoe,deacordocomatemperatura,decide
amagnitudedoincrementoaserexecutadonograudeaberturadoregistroquenteoudo
registrofrio.Oajustedecadaumdosregistrosgeralmentefeitoindividualmente,isto,
umdecadavez,alternadamente.Afigura3ilustraestasituao.
Figura3:Ajustemanualdosregistrosdeumchuveiro
Aregulagemmanualporumoperadorquejconheceascaractersticasdosistema
consideravelmentesimples,poiselejsabeaproximadamentequantodeveserograude
aberturadecadaregistro.Depoisdeabrirosregistroseesperarumcertotempoatquea
temperaturafiqueestvel,ooperadorfazoajustefinodatemperatura,ajustandodeforma
sutilosregistros.
Oajustefeitoporumoperadorquenoconheceascaractersticasdosistemamais
demorado,poiselenotemconhecimentodovaloraproximadodeaberturadosregistros.
Deformageral,esteoperadorirabrirosregistrosdeformacontnua,comvelocidadede
aberturagrande(i.e.incrementosdenaturezagrandeemintervalosdetempodiscretos),a
fimdetestararespostadatemperaturasobreosincrementos.medidaqueovalorda
temperatura se aproxima do valor desejado, o ajuste fica cada vez mais sutil (i.e. os
29
incrementossocadavezmenores).
3.4Oproblemadoajustedetemperatura
Este o problema central do projeto. O problema consiste em ajustar os graus de
aberturadosregistrosdeguaquenteedeguafriadetalformaqueatemperaturase
estabilizenumdeterminadovalordesejado(setpoint).
Osgrausdeaberturadosregistrosdevemsertaisqueovaloraoqualatemperatura
tende, deve ser igual ao valor desejado (setpoint). Idealmente, a caracterstica da
temperaturaemfunodotempodeveseaproximardovalordesejadodeformarpidae
suave.Afigura4ilustraogrficoidealparaumatemperaturaambienteinicialde22grau
Celsius, um valor desejado de 35 grau Celsius e um tempo de estabilizao de
aproximadamente15segundos.
Idealmente,estetempodeestabilizaodeveseromenorpossvel,detalmodoquea
respostadosistemasejamuitoprximafunodegrau.
Figura4:ComportamentoidealTemperaturavs.Tempo
Noentanto,devidoscaractersticasdosistemacontrolado(atrasoseperturbaes),a
30
Figura5:ComportamentotpicoTemperaturavs.Tempo
3.5OProblemadoajustedevazo
Considerandoashipteseslevantadassobreainstalaohidrulica,oajustedavazo
simples,poisavazopossuicaractersticaaproximadamentelinear,comcomportamento
crescentecomaaberturadosregistros.
Devidoscaractersticasdainstalaohidrulica,existemvriassoluesdeajustepara
umadeterminadatemperatura,ouseja,paraumvalordesejado(setpoint)detemperatura,
existeminfinitospares q , f deaberturadosregistrosdeguaquenteedeguafriaque
31
fazemcomqueatemperaturadochuveiroseestabilizenovalordesejado.
Noentanto,comoservistomaisadiante,ocontroladordetemperaturabuscaosvalores
mximos de q e de f que correspondem ao valor de temperatura desejado. Isto , a
prprianaturezadocontroladordetemperaturavisamaximizaravazo.Portanto,basta
limitar os valores mximos de q e de f em valores que correspondam aos nveis de
vazodesejados.Porexemplo,seforestipuladoqueavazodevesermxima(nvel3),os
valoresde q ede f nosolimitados.Masseporoutrolado,seavazodevesermdia
(nvel2),osvaloresde q ede f podemserlimitadosem,porexemplo,70%deseus
valoresmximosnominais.
32
Captulo4DesenvolvimentodaSoluo
4.1Introduo
Deacordocom [3ZhiqiangGaoetal.],agrandevantagemdocontrolenebulosoa
possibilidade de definir o controle por meio de expresses ligsticas simples, que so
deduzidasapartirdoconhecimentoheursticodecontroledoprocesso.Emboraousode
algoritmosgenticoseredesneuraispossamterumdesempenhoequivalente,emmuitos
casosocontrolenebulosopossuiavantagemdeformularasoluoparaoproblemaem
termosdevariveislingsticas,deumaformacompreensvelparapessoas,cujasregras
podemusaraexperinciadeoperadoreshumanos.Istofacilitaaautomatizaodetarefas
quejsomuitobemcontroladasporoperadoreshumanos.
Levandoseemcontaqueinstalaeshidrulicasresidenciaispossuem caractersticas
diferentes,equeocontroladordevefuncionarsemanecessidadedeajustesporpartedo
usurio(i.edevefuncionar"outofthebox"),eainda,queatarefadecontrolarosregistros
de gua quente e de gua fria perfeitamente realizvel por um operador humano, o
controladornebulosofoiescolhidocomoumasoluoeficazedebaixacomplexidadepara
a regulagem da temperatura em chuveiros de instalaes residenciais, cujo sistema de
aquecimentocentral(boilers,aquecedoresags,etc).
Nocaptulo3ummodeloclssicodecontroledetemperaturaeminstalaeshidrulicas
foiapresentado.Estemodeloestreproduzidonafigura6.
Figura6:Modelodesistemadecontrole
Deacordocom[3ZhiqiangGaoetal.],oquefazestemodeloparticularmentedifcilde
serconstrudooatrasoindeterminadodosistema.Ovalordeatraso, es ,representa
um deslocamento de fase de , onde a freqncia angular. Pequenos
deslocamentosemfreqnciasdeinteressepodemservistascomoperturbaes,epodem
serincorporadasemummodelosematraso.Umatrasoclassificadocomogrande,seo
33
atrasoafetademodosignificativoaestabilidadeeasmargensdefaseatalponto,queum
modelosematrasonosuficiente.
Comointuitodeconsiderargrandesatrasosnomodelomatemticodosistema,alguns
esquemas de compensao do atraso ou previso do atraso foram desenvolvidos, cujo
desempenhomuitodependentedosparmetrosparticularesdosistema[3ZhiqiangGao
etal.].Emparticular,nossistemascomatrasosgrandes,amaioriadossistemasutilizacomo
partedocontroladorummecanismodeprevisodosistema,comparmetrosparticulares
dados,comoporexemploaconstantedetempo.
Aindaassim,aimplementaodestesmecanismosdeprevisonoumatarefasimples,e
adiciona uma complexidade considervel s plantas mais simples. Esta complexidade
adicional destes sistemas, juntamente com o desempenho insuficiente para parmetros
desconhecidos, a principal razo de o modelo noprevisvel PID com mtodos de
otimizaocomoodeZieglerNichols'aindaserpredominantenaindstria,emsistemas
comatrasos[3ZhiqiangGaoetal.].
Assim,parasistemascomatrasos,emparticularaquelesemqueosparmetrosso
desconhecidos(emespecialaconstantedetempo),umatcnicadecontrolequeconsiga
obterumdesempenhoaceitvelnestascondiesdeveserutilizada.
4.2Arquiteturadosistema
Ohardwaredosistemapodeserdividoemduaspartes:hardwaredeinterfacecomousurio
e hardwaredecontrole.Aarquiteturageraldehardwaredosistemaestrepresentadana
figura7.
34
Figura7:Arquiteturageraldohardware
Deacordocomafigura,ousuriointeragecomumdisplayebotes,quesocontrolados
porummicrocontrolador.Omicrocontroladorporsuavez,recebeosinaldetemperaturade
umsensordetemperatura,quedigitalizadoporumconversorA/D.Osdriversdosmotores
depassorecebemcomandosdomicrocontrolador,paragirarosmotoresdepassoqueesto
mecanicamenteacopladosaosregistrosdegua.
Ohardwaredeinterfacecomousuriopossuiumpainelimpermevelcomdisplayde
cristal lquido e botes, que so controlados por um microcontrolador, enquanto que o
hardwaredecontrolepossuidoisregistrosdepresso(misturadores),acopladosaummotor
de passo cada um, um sensor de temperatura da gua cuja informao passada ao
microcontrolador atravs de um conversor A/D e dois drivers de motor de passo que
controlam a posio dos motores de passo, e que recebem informaes de controle do
microcontrolador.
35
Aarquiteturadosoftwarecontmdoisblocoseestilustradanafigura8.
Figura8:Arquiteturageraldosoftware
Fluxograma
Ofluxogramadaestruturageraldosoftwareestapresentadonafigura9.
36
Figura9:Fluxogramageraldosoftware
Nolaoprincipal,primeiramentetodasasvariveissoinicializadas,easinterrupes
so habilitadas. Desta forma, sempre que ocorrer o estouro do timer ou um boto for
pressionado, as rotinas de tratamento de interrupo correspondentes sero executadas.
Enquantoosistemaestiverligado,ocontroledosregistrosexecutadoacadasegundo.
Existemduasrotinasdetratamentodeinterrupo.Aprimeiraocorresemprequeum
boto for pressionado. Neste caso, o boto pressionado detectado, e a funo
correspondenteexecutada(porexemplo,incrementodatemperaturadesejada).Asegunda
interrupoocorreacada0,01s(10ms),quedefineabasedetempodosistema.Sendo
assim,acadaocorrnciadestainterrupo,avariveltempoincrementadaem0,01.
37
4.3Hardwaredeinterfacecomousurio
Ohardwaredeinterfacecomousuriocompostopeloconjuntodebotesedisplay,que
estointegradosnopainel,epelomicrocontrolador,querecebeeemitesinaisparaestes
dispositivos.
Aarquiteturageraldohardwaredeinterfacecomousurioestilustradanafigura10.
Figura10:Arquiteturadohardwaredeinterfacecomousurio
Operao
Aoperaodopainelbastantesimpleseintuitiva.Ousurioajustaatemperatura
desejadaatravsdosbotesdeaumentoediminuiodatemperaturaetambmajustaa
intensidade (vazo) desejada atravs dos botes de ajuste da intensidade. O display
apresentaovalordesejadodatemperaturadagua,ovalormedido,otempodecorrido
desdeoligamentodosistema,aintensidade(1,2ou3)escolhidaeseosistemaestligado
(ON)oudesligado(OFF).
EmseguidaousuriopressionaobotoLIGA/PAUSAparaligarochuveiro.
Aqualquermomentoousuriopodealterarosajustesdetemperaturaedeintensidade
atravsdosbotesapropriados.
Quando o usurio terminar de usar o sistema, ou quiser interromper a ducha
temporariamente, o boto LIGA/PAUSA deve ser pressionado para pausar/desligar o
38
chuveiro.
Excees
Casoosistemanoconsigaatingirovalordesejadodatemperaturaaps120segundos,
umavisoapresentadonodiplay,eochuveiroimediatamentedesligado.
Ajustedatemperatura
Atemperaturadaguapodeserajustadaentre21grauCelsiuse46grauCelsius.
Ajustedaintensidade
Aintensidadedagua(vazo)podeserajustanosvalores1(fraca),2(mdia)ou3
(forte).
4.4Hardwaredecontrole
Ohardwaredecontroleestapresentadonafigura11.
Figura11:Arquiteturadohardwaredecontrole
Osistemapossuiumsensordetemperaturadagua(LM35),quecolocadoemcontato
39
diretocomaguaresultantedamisturadasguasquenteefria(i.e.guadaducha)
OsinaldetensodosensorlidopelomicrocontroladoratravsdeumconversorA/D.
Cadaumdosdoisatuadoressocompostosporummotordepasso,queacoplado
mecanicamenteaumregistrodepressode3/4(comumeminstalaeshidrulicas).Este
motor acionado por um driver de motor de passo que recebe comandos do
microcontrolador.
4.5Softwaredeinterfacecomousurio
Afigura12ilustraofuncionamentobsicodosoftwaredeinterfacecomousurio,que
bastantesimples.Sealgumbotoforpressionado,osoftwaredetectaobotopressionado,e
executaaaocorrespondente.Odisplayatualizadocontinuamentecomovalordesejado
datemperaturaecomovalormedidodetemperatura.
Figura12:Arquiteturadosoftwaredeinterfacecomousurio
Diversasfunesestodisponveisaousurio:oaumentoediminuiodovalor
desejadodatemperatura,oaumentoediminuiodovalordesejadodaintensidade
(vazo),eligaredesligar(pausar)osistema.
40
Ofluxogramadosoftwaredeinterfacecomousurioestilustradonafigura13.
Figura13:Fluxogramadosoftwaredeinterfacecomousurio
Osoftwaredeinterfacecomusuriobastantesimples.Obotoquefoipressionado
detectado,eafunocorrespondenteexecutada.Odisplayatualizadonolaoprincipal
doprograma.
41
4.6Softwaredecontrole
Utilizandoanomenclaturade[1Driankovetal.,1995],omecanismodeinferncia
nebuloso utilizado um FKBC (Fuzzy Knowledge Based Controller), tipo PI
(ProportionalIntegral),atuandocomoumDECS(DirectExpertControlSystem).
EmumcontroladorPIconvencional,avariveldecontroleasomadoerromultiplicado
porumfator K P somadointegraldoerromultiplicadaporumfator K I .
Ouseja,emumcontroladorPIconvencional,temse
u = K Pe K It edt ,onde u avarivelcontroladae e oerro.
Emalgumasaplicaes, u controladaincrementalmente,isto,atravsdesuataxade
variaode
du
dt
ReescrevendoaequaodocontroladorPIincremental,temse
du
de
= K P
K Ie
dt
dt
Paraocasodiscreto,queocasoquandosetemumcontroledigital,estaequaoescrita
daseguinteforma:
u k = K Pe k K Ie k
onde:
u k = u k u k1 oincrementorealizadonavarivelcontroladaentreosinstantes
discretos k 1 e k .
e k = e k e k 1 avariaodoerro,entredoisinstantesdiscretos k 1 e k .
EmumcontroladornebulosoPIdotipoincremental,oincrementodavariveldecontrole
42
entredoisinstantesdiscretosdadopor
u k = F e k , e k
onde F umafunonolinear,definidapelomecanismodeinferncianebuloso.
Osoftwaredecontrolepossuiumcontroladornebulosotipo PI,isto,asvariveisde
entradadocontroladorsooerro e eavariaodoerro e ,eassadassovariaesde
posiodosregistros.Oerroadiferenaentreovalordesejadodetemperatura(setpoint
de temperatura) e o valor da temperatura da gua lido pelo sensor de temperatura. A
variaodoerroadiferenaentreduasleiturasconsecutivasdoerro,numdeterminado
perododeamostragem.
Existemduassadasdecontrole, uQ e u F ,quesoasvariaesdaposiodos
registrosdeguaquenteefria,respectivamente.Umvalornegativodevariaoserefereao
sentidodefechamentodoregistro.
Aestruturageraldosoftwaredecontroleestesquematizadanafigura14.
Figura14:Arquiteturadosoftwaredecontrole
asvariaesdaposiodosregistrosQ(quente)eF(frio).Oprximoblocolovalor
desejado de vazo fornecido pelo usurio (que pode ser 1, 2 ou 3), e as varies das
posiesdosregistros,ecalculaqualdeveserovalordaposiodosregistrosQeF.
4.6.1Arquiteturadocontroladornebuloso
AarquiteturadocontroladornebulosodotipoPI,eestesquematizadanafigura15.
Figura15:Arquiteturadocontroladornebuloso
Ocontroladornebulosoloerroeavariaodoerro,ecalculaasvariaesdasposies
dosregistros.
4.6.2Funesdepertinnciadocontroladornebuloso
Existemquatroclassesdefunesdepertinncia:asfunesdepertinnciadoerro,da
variaodoerro,davariaodaposiodoregistrodeguaquenteedavariaodaposio
doregistrodeguafria.
Todasasfunesdepertinnciasotriangulares(comexceodasfunesdeborda,que
so trapezoidais), pois a literatura mostra que alm da forma destas funes no
apresentarem grandes diferenas no resultado final neste tipo de controle em relao
44
funesmaisprecisas(gaussianasporexemplo),opodercomputacionalrequeridotambm
bastantereduzido[1Driankovetal.,1995].
Devesenotarquetodasfunesdepertinnciapodemassumirvaloresentre0e1(grau
depertinncia).
Estasquatroclassesdefunesestorepresentadasnasfiguras16a19.
Funesdepertinnciadoerro e :
Figura16:Funesdepertinnciadoerro
Funesdepertinnciadavariaodoerro e :
Figura17:Funesdepertinnciadavariaodoerro
Funesdepertinnciadavariaodaposiodoregistrodeguaquente uQ :
45
Figura18:Funesdepertinnciadavariaodaposiodoregistroquente
Funesdepertinnciadavariaodaposiodoregistrodeguafria u F :
Figura19:Funesdepertinnciadavariaodaposiodoregistrofrio
46
4.6.4Regrasdeinfernciadocontroladornebuloso
Asregrasdeinfernciasobaseadasnomodelopropostoem[1Driankovetal.,1995]
paracontroladoresnebulososdotipoPI,epossui49regrasparaocontroledo registro
quente,dispostasnoseguinteformato:
IF erro IS L k AND erro IS L k THEN uQ IS M k
nG:negativoGrande
nM:negativoMdio
nP:negativoPequeno
Z:Zero
pP:positivoPequeno
pM:positivoMdio
pG:positivoGrande
Osvaloreslingusticos M k soosseguintes:
fB:fechaBastante
fP:fechaPouco
fS:fechaSutilmente
M:Mantm
aP:abrePouco
aS:abreSutilmente
aB:abreBastante
Devidoequivalnciaentreasregrasdocontroladordoregistroquenteedoregistro
47
frio,nofoinecessriocriardoismecanismosdeinfernciadistintos.Apenasomecanismo
deinfernciadoregistroquentefoiconstrudoe,pararealizarocontroledoregistrofrio,
usouseomesmomecanismo,pormcomavariaode uQ invertida.Isto,usouse
u F= uQ .
Basicamente,asregrasseguemosseguintesprincpios:
A. O erro igual diferena entre o valor desejado (setpoint) e o valor atual da
temperatura.Seoerroforpositivo,deveseatuarnoregistrodeguaquentedeformaa
abrlo,eatuarnoregistrodeguafriadeformaafechlo.Seoerrofornegativo,
devesefazerocontrrio.
B.Seoerroforgrande,aatuaonosregistrosdevesergrosseira,eseoerrofor
pequeno,aatuaodevesersutil.
C. Se a variao do erro (entre duas inferncias consecutivas) for grande, muito
provvelqueocorraumsobresinalmuitograndepoisavarivelcontroladaestse
aproximandomuitorapidamentedovalordesejado.Nestecaso,deveseatuardeforma
inversa(emrelaosregrasbaseadasnoerro)nosregistros,nosentidodecompensar
ouamenizarestabruscavariao.
As49regrasdocontroledoregistroquenteestolistadasabaixo:
01 IF erro IS nG AND erro IS nG THEN uQ IS fB
48
49
50
Asregraspodemservisualizadasdeumaformamaiscompactanaseguintetabela:
erro
erro
nG
nM
pP
pP
pM
pG
nG
fB
fB
fB
fB
fP
fS
nM
fB
fB
fB
fP
fS
aS
nP
fB
fB
fP
fS
aS
aP
fB
fP
fS
aS
aP
aB
pP
fP
fS
aS
aP
aB
aB
pM
fS
aS
aP
aB
aB
aB
pG
aS
aP
aB
aB
aB
aB
Podesenotarqueosvaloresdatabelasosimtricosemrelaosduasdiagonais,que
estodestacadasnatabela.Istoocorreporqueaaoasertomadaparaumerronegativo
exatamenteaaosimtricaemrelaoaoerropositivo.Omesmoocorreparaavariao
doerro.Destamaneira,onmeroefetivoderegras,ouseja,onmeroderegrasobtidoaps
eliminaodetodasregrasquepossuemaessimtricas,desomente16.
4.6.5Fuzificao,infernciaedefuzificao
Osistemadecontrolenebulosopossuiasseguintescaractersticas:
funesdepertinnciatriagulares(Obs:paraoerroevariaodoerroasfunesde
pertinnciaso trapezoidaisnosextremos), comcrosspoint level iguala 0.5 e
crosspointratioiguala1
nmeroderegras:49
tipodeinferncia:maxminscaledindividualrulebasedinference
Tnorma:min(a,b)
defuzificao:CenterofSums(COS)
Parailustrarosprocessosdefuzificao,infernciaedefuzificao,apresentadoaseguir
umexemplo,utilizandoosvaloresmedidos erro = 6.4 erro = 2.1 .
51
Obs:Oexemploapresentadodocontroledoregistroquente.
a)Fuzificao
As funes de pertinncia do erro que possuem valor maior que zero para umerro de
entradaiguala6.4soasfunespositivoMdioepositivoGrande.Estasfunesassumem
osvaloresde0.4e0.6,respectivamente,paraumerroiguala6.4.Afiguraa20ilustraa
fuzificaodovalordeerroiguala6.4:
Figura20:Fuzificaodoerro
Paraavariaodoerro,asfunesdepertinnciaqueassumemvalormaiorquezeropara
umavariaodoerroigual2.1soasfunes negativoMdio e negativoPequeno. Os
valores assumidos por elas so de 0,05 e 0,95, respectivamente. A figura 21 ilustra a
fuzificaodavariaodoerro:
Figura21:Fuzificaodavariaodoerro
52
b)Inferncia
Asregrasafetadassoaquelasquepossuemnoantecedenteosvaloreslingusticospositivo
Mdio ou positivo Grande parao erro, e negativoMdio ou negativoPequeno paraa
variaodoerro.
Sendoassim,asseguintesregrassodisparadas:
37 IF erro IS pM AND erro IS nM THEN uQ IS M
38 IF erro IS pM AND erro IS nP THEN u Q IS aS
min pM erro , nM erro = min pM 6.4 , nM 2.1 = min 0.4,0 .05 = 0.05
Seguindoomesmoraciocnioparaasregras38,44e45,temos:
regra38: abre SutilmenteSUP = min pM 6.4 , nP2.1 = min 0.4,0 .95 = 0.4
regra44: abre SutilmenteSUP = min pG 6.4 , nM 2.1 = min 0.6,0 .05 = 0.05
regra45: abre PoucoSUP = min pG 6.4 , nP 2.1 = min 0.6,0 .95 = 0.6
Sehouvermaisde1valordelimitesuperiorparaalgumvalorlingusiticodoconsequente,
comonestecasoocorrecomovalorabreSutilmente,ovalormximoescolhido.
Ainferncianesteexemploforneceportantoosseguintesresultados:
53
Figura22:Funesdepertinnciaresultantes
c)Defuzificao
Nadefuzificao,asfunesdepertinncia(ouosconjuntosnebuloscontnuos)resultantes
dainfernciasotransformadosemumvalornumrico.
OmtodoutilizadopararealizaradefuzificaoomtodoconhecidocomoCenterof
Sums(COS).Estemtodoligeiramentediferentedoclculodovalordaabcissadocentro
demassa.
54
Nomtododocentrodemassa,calculadoocentrodemassadafunodepertinncia
resultante da unio de todas as funes de pertinncia resultantes. Esta funo de
pertinnciaestilustradanafigura23.
Figura23:Defuzificaopelomtododocentrodemassa
NomtodoCenterofSums(oucentrodassomas),calculadoocentrodemassaaolongo
daabcissa,utilizandoacontribuioindividualparaocentrodemassadecadafunode
pertinncia. Isto , ao invs de calcular o centro de massa da unio das funes de
pertinncia,ocentrodemassadasomadasfunesdepertinnciacalculado.
Comoconsequencia,asregiesdeinterseoentreasfunesdepertinnciacontribuem
duasvezesparaoclculodocentrodemassa.
Afigura24mostraafunodepertinnciausadanestemtodo,queasomadasfunes
depertinnciaresultantesdainferncia.
Figura24:Defuzificaopelomtododocentrodassomas
55
Areaemcinzaclaroevidenciaadiferenaentreestafigura(soma)eafiguraanterior
(unio).
Ovalornumricode uq paraoexemplodadoestindicadonafigura,evale4.63.
Estevalornumricooresultadodadefuzificao,ecalculadodaseguinteforma:
uq =
U uf u du
U f u du
U u f 1 u duU uf 2 u du...U u f n u du
U f 1 u duU f 2 u du...U f n u du
= 4.63
Afigura25resumeosprocessosdefuzificao,infernciaedefuzificao.
56
Figura25:Fuzificao,infernciaedefuzificao
57
4.6.6Fluxograma
Ofluxogramadosoftwaredecontroleestilustradonafiguraaseguir:
Figura26:Fluxogramadosoftwaredecontrole
Primeiramenteoerrocalculado.Emseguida,seosistemaacaboudeserligado,as
variveis das posies dos registros so inicializadas com os valores padro, e o
primeiroregistroasercontroladooconfiguradocomosendooregistroquente.Como
o sistema acaba de ser ligado, no h variao do erro, e por isto esta varivel
colocadaemzero.
58
Seosistemajestiveroperando,avariaodoerrocalculada,levandoemcontao
erroatualeoerroantigo.Avariveldevariaodoregistroquente(delta_u_quente)
calculada utilizando o algoritmo de inferncia nebulosa (chamando a funo
inferencia_nebulosa).Emseguida,oregistroquenteouofrioajustado,dependendodo
valordavarivelregistro_controlado,que contmainformaodequalregistroest
sendocontrolado.Emseguida,asfunesqueenviamasinformaesodeposiodos
registrosaosdriversdosmotoressochamadas.Nestaschamadasdefuno,avarivel
fator_vazo,quepossuivalorespossveisde0.5, 0.75ou1,estabeleceumfatorde
escalaparaposiodosregistros,deacordocomaintensidadedesejada(1,2ou3).
Finalmente,seambososregistrosestiveremnovalormximo(100%),umatentativade
incrementonoregistroquentealteraocontroleparaoregistrofrio,eumatentativade
incrementenoregistrofrioalteraocontroleparaoregistroquente.
Afigura27demonstraumexemplodecontrole.
Figura27:Exemplodefuncionamentodocontroledosregistros
Nesteexemplodafigura,osistemaligadoeasposiesdosregistrosquenteefrioso
inicialmentede0%e100%,respectivamente.
Atemperaturamedidaestabaixodovalordesejado(i.e.aguaestmuitofria),eportanto
59
a posio do registro quente vai sendo incrementada. Aps vrias iteraes, o registro
quentecheganaposiomximade100%.Noentanto,atemperaturaaindacontinuaabaixo
dovalor desejado, e portanto o controle do registro trocado para o registro frio, que
comeaaserdecrementado.
4.7Funcionalidadesfuturas
Algumassugestesdemelhoriadoprojetoerecursosadicionaisquepoderiamviraser
incorporadasfuturamenteestolistadasaseguir.
Desligamentoautomticodeseguranaparaaprevenodeacidentesrelacionadosa
temperaturaselevadas.Seatemperaturadagua,porqualquermotivo,seigualarou
ultrapassar o valor de 48C (1 unidade abaixo do valor recomendado pelo U.S.
ConsumerProductSafetyComission),osistemadeverserdesligadoimediatamente.
De acordo com o rgo norteamericano U.S. Consumer Product Safety
Comission,umaexposiodeaproximadamente5minutosaumatemperaturade
49Cpodelevaraqueimadurasdeterceirograu.
Botes de memria de temperatura padro: diferentes pessoas podem definir
temperaturaspreferidascomosbotesdememria.
Tempodedesligamentoautomtico(timer)paraochuveiro,ajustvelpelousurio,
comointuitodeevitarodesperdciodegua.
60
Captulo5Prottipoetestes
Aconstruodeumprottipoparaumainstalaohidrulicaresidencialenvolveriao
projeto e construo de dois drivers de motor de passo (que efetuariam o controle de
posioangulardosmotores,dadasasposiesdesejadas),etambmoprojetomecnicode
acoplamentodestesmotoresaosregistrosdepresso(osregistrosquenteefrio),queseria
consideravelmentecomplexopoisestesrequeremumtorqueconsidervel.Almdisso,a
realizao de testes deste prottipo seria muito difcil de se realizar em um banheiro
residencial, pois no haveria fcil acesso equipamentos que normalmente s so
encontradosembancadasdetestedelaboratrios(fontesdealimentao,instrumentosde
medio,etc).
Tendoistoemvista,optouseporsimularumainstalaohidrulicaresidencial.Aoinvs
demotoresdepassoacopladosmecanicamentearegistrosdepresso,foramusadasbombas
deguacujasvazespodemserajustadasvariandoseatensodeentrada.Estasbombasj
seencontravamdisponveisnoLaboratriodeMicroprocessadoresdaEPUSP.Aanalogia
com uma instalao hidrulica residencial imediata. Se naquela devemos ajustar os
registrosparavariaravazodoquenteedofrio,noequipamentoutilizadoparaasimulao
devemos ajustar as tenses das bombas para variar asvazes. claro que a ordem de
grandezadasvazesencontradaseminstalaeshidrulicasresidenciaismuitomaiorque
asobservadasnesteequipamentoparasimulao,quepodeservistocomoumaminiaturade
umainstalaohidrulicareal.
Afigura28ilustraaanalogiaentreainstalaohidrulicaresidencialeoequipamento
utilizadonasimulao:
61
Figura28:Analogiaentreainstalaohidrulicaresidencialeoequipamentousadona
simulao
Noequipamentoutilizadonasimulao,aguaquentesugadapelabombaquente,de
umrecipientecontendoguaaquecida,eaguafriasugadapelabombafria,deum
recipientecontendoguanatemperaturaambiente.
5.1Hardware
Aarquiteturageraldohardwareestapresentadonafigura29.
62
Figura29:Arquiteturageraldoprottipoquecontrolaoequipamentousadonasimulao
Oprottipopodeserconsideradocomosendooconjuntodecompontentes{PC,Kit8051,
Conversor A/D, Sensor LM35}. J o equipamento usado na simulao da instalao
hidralica dado pelo conjunto de componentes {Resistncia, Recipientes, Mangueiras,
Drivers,Bombas,ConectorY}.
Comopodeservistonafigura,ousuriointeragecomumPC,peloqualenviacomandose
recebedadosdoprocesso.Ousuriopodetambmvisualizaralgunsdadosdoprocessono
displaydokit.
Aresistnciaeltrica(queligadaem220Vac)aqueceaguadorecipientedeguaquente,
quesugadapelabombaQ.JabombaFsugaguadorecipientedeguafria(temperatura
ambiente).Paratransportaragua,sousadasmangueirasdeplstico.
Osdriversdasbombas(quesoligadosem+5Vdce+24Vdc)permitem(atravsdesinais
PWMvindosdomicrocontrolador)variarastensesaplicadasnasbombas,eassim,variar
asvazesdeguaproduzidaspelasmesmas.
63
5.1.1Resistnciaeltricaerecipientes
Paraaqueceraguanorecipientedeguaquente,foiutilizadaumaresistnciaeltricade
imerso,marcaDennex(www.dennex.com.br),compotncianominalde3000W,comtubo
decobre,comtensodeentradade220V.
Aresistnciaeltricapossuiumtermostatomecnicoacoplado,quefacilitaaregulagemda
temperaturadaguaemaproximadamente50grauCelsius.
Os recipientes usados so tanques de leo para compressores, com capacidade para 20
litros,comtubossoldadosemsuasbordas,parafailconexodasmangueiras.
Afigura30ilustraorecipientedeguaquente.
Figura30:Recipientedeguaquentecomresistncia
Orecipientedeguafriaanlogoaeste,eapenasnopossuiaresistncia.
5.1.2Kitdidticodo8051eseusperifricos
Paraaconstruodesteprottipo,foiutilizadookitdidticodisponvelnoLaboratriode
Microprocessadores da EPUSP. As funcionalidades/componentes do kit que foram de
64
interesseparaaconstruodoprottiposoasseguintes:
comunicaoserialRS232
2bitsdaportadigitalP1(P1.6eP1.7)
entradadoconversorA/D(conectadanosensorLM35)
displaydecristallquido
Programas podem ser enviados facilmente para a memria RAM da placa graas ao
programa monitor residente na ROM. Atravs de comandos no programa Monitor,
possvelenviarocdigoexecutvelparaumaregiodememriadaplacaeemseguida
executlo.
AcomunicaocomoprogramamonitorfeitaatravsdocanalRS232dokit.
O conversor A/D foi utilizado para ligar o LM35, tambm disponvel no material do
laboratrio.ComoconjuntoLM35+conversorA/Dpossvelleratemperaturadagua
comumaboapreciso(cercade+/1grauCelsius,deacordocomodatasheetdomesmo).
Odisplaydecristallquidoutilizadoparaapresentarosseguintesdadosdoprocesso:
temperaturadesetpoint
temperaturamedida
tempodecorrido
intensidade
estado(ligado/desligado).
Afigura31ilustraoscomponentesdeinteressedokit.
Figura31:Funcionalidadesdeinteressedokit
65
5.1.3Driversdasbombas
AsbombasnarealidadesomotoresDC,quefuncionamde12a24Vdc,comumacorrente
nominalde1A.AplacadriverdabombaumdriverdemotorDC,efuncionade6a24
Vdc,esuportacorrentesdeat5A.
EstaplacapossuitransistorestipoMOSFET,opticamenteisolados,quepodemchaveara
tensofornecidaplaca(quede+24Vdc)paraasuasada,queconectadanomotor.Ao
chavearestatensocomumaondaPWM,possvelregularatensomdianasada.Ao
regularatensomdianasada(queaentradadomotorDC),variaseavelocidadedo
motorDC,eassimcontrolaseavazoproduzidapelabomba.
EstasplacasdriverforamadquiridasnalojavirtualdecomponenteseletrnicosFuturlec
(http://www.futurlec.com).Ocdigodocomponente(partNr.)ETDCMOTOR,eele
denominadoOptoDCMotorController.
Afigura32ilustraasconexesdeinteressedestaplaca.
Figura32:ConexesdeinteressedodriverdemotorDC
Obs1:aplacapossuiumjumperquealternaentrecontrolemanualeremoto.Paracontrole
remotoporPWM,ojumperdevesercolocadonaposioCONTROL.
Obs2:aplacapossuiduasconexesdejumperparaescolheradireoderotaodomotor.
Com o jumper SWL acionado o motor gira em uma direo, e com o jumper SWR
acionado,omotorgiranadireocontrria.
66
5.2Software
Interfacecomousurioeaquisiodedados
Aoiniciaraexecuo,osoftwaredadigiduchaapresentaaseguintemensagemaousurio
peloterminalserial:
digiduchaTermostatodigitalparachuveiroscomaquecimentocentral
Comandos:
+:incrementaatemperaturadesejada
:decrementaatemperaturadesejada
>:incrementaaintensidade
<:decrementaaintensidade
1:liga
0:desliga
Comopodesernotado,aoinvsdebotescomofoipropostonoprojeto,oprottiporecebe
os comandos pelo terminal serial. Outra sutil diferena com relao ao comando de
LIGA/PAUSA.Noprottipoexisteumcomandoparaligareoutrocomandodistintopara
desligar o sistema, enquanto que no projeto proposto existia apenas 1 comando de
LIGA/PAUSA.
Noentanto,aoperaodestainterfacecomousurioanlogaquelaquefoiprojetada.
Oscomandosdomenuapresentadosointuitivoseautoexplicativos.
Ao ligar o sistema, o software apresentar no terminal serial a mensagem [Sistema
Ligado].Emseguidaseroapresentadososdadosdoprocesso,acadainferncia,isto,
aproximadamenteacada1segundo.
Otextoaseguirilustraumexemplo:
[SistemaLigado]
tempo=+001.00:Temperatura_setpoint=+035.00,Temperatura_medida=+027.45
erro=+007.54,delta_err=+000.00,delta_u=+009.63(Q)
67
potenciaQuente=+009.63,potenciaFrio=+100.00
tempo=+002.00:Temperatura_setpoint=+035.00,Temperatura_medida=+027.45
erro=+007.54,delta_err=+000.00,delta_u=+009.63(Q)
potenciaQuente=+019.27,potenciaFrio=+100.00
(...)
Destaforma,osdadosdoprocessopodemsercoletadosparaaelaboraodegrficos.
ControledasbombascomsinaisPWM
Comoatensodeentradadodriverdasbombasde+24Vdc,aoenviaraodriverumaonda
PWMcomumdutycycleentre45%e95%,obtmseumatensovarivelnasadado
driver (entrada do motor DC da bomba), de 0,4524 = 10,8 Vdc a
0,9524 = 22,8 Vdc .
Comoomotordabombafuncionade12a24Vdc,com10,8Vdcnaentradaomotor
praticamentenogira,ecom22,8Vdcnaentradaelegiraconsideravelmenterpido.
Paracontrolarasduasbombas,osoftwaredadigiduchageraduasondasPWM,umana
sadaP1.6(bombadeguafria)eaoutranasadaP1.7(bombadeguaquente).Asondas
possuemfrequnciade100Hzedevidoscaractersticasdotimerdomicrocontrolador,
paraestafrequncia,omaiornmerodedutycyclesdiferentes(entre45%e95%)possveis
paraumaondade
0,95 0,459216 = 4608 dutycyclesentre45%e95%.
Obs:9216onmerodeincrementosdotimerdo8051paraobterumtempodecorridode
0,01s(100Hz),dadoumafrequnciadeclockde11,0592Mhz.
Ouseja,cadabombapodeserajustadaem4608potnciasdiferentes,queumaresoluo
consideravelmentegrande(aproximadamenteequivalenteaumconversorD/Ade12bits).
MtododeobtenodasduasondasPWM
68
AsduasondasPWMpossuemfrequnciaconstantede100Hz,dutycyclesdistintos,que
podemvariarentre45%e95%.
Odutycyclevarivelalcanadovariandosecontinuamenteotempodeestourodotimer.
Attulodeexemplo,suponhaqueaondaPWM_Qdeveterumduty_cyclede57,3%,ea
ondaPWM_Fdeveterumdutycyclede78,1%.
Estado0:Inicialmente,aossinaisdasduasondasatribudoovalor'1'.Emseguidaotimer
configuradoparaqueseuestouroocorradaquia
0,5730,01 = 0,00573 segundos .
Estado1:Quandoocorreresteestouro,osinalPWM_Qcolocadoemzero,eoestourodo
timerreajustadoparaocorrerdaquia
0,781 0,5730,01 = 0,00208 segundos .
Estado2:Quandoocorreresteestouro,osinalPWM_Fcolocadoemzero,eoestourodo
timero
reajustadoparaocorrerdaquia
1 0,7810,01 = 0,00219 segundos .
Destaforma,quantoocorreresteestourovoltaremosaoEstado0,reiniciandoociclo.
Otempodecorridoem1ciclodeexatamente
0,005730,002080,00219 = 0,01 segundos ,
estabelendoumafrequnciade100Hzparaambosossinais.
Estespassosestoresumidosnafigura33.
69
Figura33:Geraodeduasondaspwmdistintas,defrequnciaiguala100Hz
5.3Resultados
Diversostestesforamrealizados.Optouseporapresentaraquiapenasosresultados
maisrelevantes.
Aps a realizao de muitos testes, notouse que o setpoint de temperatura foi
alcanadorapidamente(emaprox.30segundos)namaioriadasvezes,equeacurvade
temperatura apresentou um sobressinal consideravelmente baixo (no mximo +1 grau
Celsius).Apesardarpidaestabilizaodatemperatura,aestabilizaodaspotnciasdas
duas bombas (ou pela analogia feita, as posies dos registros) foi vagarosa (de 2 a 3
minutos).Noentanto,esteefeitojeraesperadodevidoadiversosfatoresqueperturbamou
atrasamosistema,taiscomoogradualaquecimentodamangueira,aimprecisodasbombas
eaaltainrcianotempoderespostadosensor.
70
Ogrficodafigura34apresentaoresultadodavariaodetemperaturacomotempo,
paraumtesterealizadocomumvalordesejadode35grauCelsius.
Figura34:Grficodatemperaturaemfunodotempo
Osegundogrficodeinteresseodaspotnciasdasbombas(poranalogia,asposies
dosregistros)emfunodotempo.Estegrficoestilustradonafigura35.
71
Figura35:Grficodaspotnciasdasbombasemfunodotempo
Apartirdogrfico35,notasequeinicialmenteapotnciadabombafriade100%,
enquantoqueapotnciadabombaquentedezero.Gradualmenteapotnciadabomba
quenteaumentada,atchegaremseuvalormximoe,apartirda,ocontrolepassado
bombafria,quedecresceataproximadamente40%eentoretornagradualmenteaseu
valor original, de 100%, momento no qual o contrle novamente trocado, desta vez
repassado bomba quente. A potncia da bomba quente ento gradualmente
decrementada,tendendolentamenteaumvalorestvel,prximode75%.
Aps200segundos,temsedoisvalorespraticamenteestveisdepotnciadasbombas,
sendoqueapotnciadabombafriaestem100%,eapotnciadabombaquenteestem
aproximadamente75%.
72
Captulo6ConsideraesFinais
Para projetar o controlador nebuloso proposto, os autores tiveram que estudar
minuciosamentevriosmtodosdecontrolenebulosodiferentes,atchegaraummtodo
que,aomenosnavisodosmesmos,maisseadequaaoproblema.
Apesardegraficamenteainferncianebulosaparecerumconceitobastantesimples,a
implementaodetalcontroladoremsoftwarebastantetrabalhosa.Comofoivistona
parte4.6.5,algunsmtodosalternativosdecontrolenebulosotiveramqueserpesquisados,
particularmenteaquelesquemaisseadequavamimplementaoemsoftware,taiscomoo
mtododecentrodassomasparaadefuzificaoaoinvsdomtododecentrodemassa.
6.1Quantoaocumprimentodosobjetivos
Todososobjetivosestabelecidosnaseo1.3foramalcanados:
oajusteautomticodatemperatura
oajusteautomticodavazo
possibilidadedealteraratemperaturadesejadacomosistemaligado
possibilidadedealteraravazodesejadacomosistemaligado
sensibilidadeperturbaesexternas(exemplo:variaesnapressodastubulaes)
Oajusteautomticodatemperatura,queoobjetivomaisimportantedestetrabalho,
estdemonstradonocaptulo5,naseodetestesrealizados.
Osobjetivosrestantestambmforamalcanadosdurantesasobservaesdostestes.Isto
,oscomandosdeinterfacecomousurioparaalteraratemperaturaeavazo, como
sistemaligado,funcionaramcorretamente.
73
6.2Quantoaodesenvolvimentoesuasdificuldades
Vrias dificuldades foram encontradas ao longo deste trabalho, principalmente
relacionadasahardware.Semdvidaamaiordificuldadenesteprojetofoicomrelao
interface entre o microcontrolador e os motores DC de alta corrente (bombas).
Primeiramente,haviasidopropostoummtodoparacontrolaratensonosmotorespor
meiodeamplificadoresdepotncia.Isto,oconversorD/Adomicrocontroladorforneceria
umsinalentre0e5Vaumamalhadeampops(LM741)queconverteriamestesinalpara
umsinalproporcionalentre4e8V.Comoltimoestgio,seriausadoumamplificadorde
potnciaparamultiplicarestesinalde4a8Vporumganhode3,resultandonumsinalde
12a24V,quepoderiaserligadonosterminaisdomotor,edrenarumacorrenteelevadapor
setratardeumamplificadordepotncia.Estaidiaestilustradanafiguraaseguir:
Figura36:Conversodeumsinalde0a5Vparaumsinalde
12a24V
Noentanto,apesardoestgiodebaixapotncia(oconversor05a48)terfuncionado
perfeitamente utilizando os ampops LM741, o estgio de potncia que foi construdo
utilizandooampopdepotnciaLM675(queinclusivetevedeserimportadoporserumCI
raro) no chegou a funcionar. Primeiramente, o erro estava em utilizar um ganho de
somente3paraesteampop(deformapoucoclaranodatasheetestdescritoqueesteCIs
funciona se ele fordispostocom resistores detal formaa ter ganhos maioresque 11).
Inmerostestesforamrealizadonolaboratrio,utilizandoaconfiguraoidnticaaoque
estdescritonodatasheetdomesmo,semsucesso.DepoisdeoCIsobreaquecerefalharpor
completo,estaidiafoiabandonada.
Estaidiafoientosubstitudaporoutramuitomaissimples,queutilizaumaplaca
driverdemotorDC.
74
Outradificuldadefoicomrelaoaosoftwaredoprottipo.Afunodetratamentode
interrupodotimerestavarealizandooperaesdepontoflutuante.Aparentemente,no
havianadadeerradocomocdigo,masosoftwarefalhavaconstantemente.Nomanualdo
compiladorSDCC,existeumavisoparanorealizaroperaesdepontoflutuantedentrode
funesdetratamentodeinterrupo(paraqueistosejapossvel,necessriorecompilar
algumaspartesdocompilador).Apsaremoodasoperaesdepontoflutuantededentro
dasrotinasdetratamentodeinterrupo,osoftwarefuncionouperfeitamente.
Outroproblemamenorfoitambmrelacionadoarotinasdetratamentodeinterrupo.
DeacordocomomanualdoSDCC,sevariveisglobaissomodificadasdentroderotinas
detratamentodeinterrupo,estasdevemserdeclaradascomovolteis(volatile),eo
acessoelasdeveseratmico.
Esteproblemafoifacilmenteresolvido,bastandoapenasdeclararasvariveisglobaiscomo
volatile.
Finalmente,umdosproblemasmaisincovenientesfoirelacionadoaosensorLM35.
Primeiramente, o LM35 utilizado foi totalmente encoberto por silicone para
impermeabilizlo.Noentanto,istoocasionouumainrciabastantegrandenotempode
respostadosensor.Isto,quandoemcontatocomguaquente,osensoracusavadurante
muito tempo a temperatura ambiente ainda. Com a lenta troca de calor entre o
encapsulamentodoLM35eosilicone,aleituradosensoraumentavamuitolentamente.
Asoluoadotadaenvolveuremovercompletamenteosiliconeedeixarpoucomaisda
metadedoencapsulamentoemcontatodiretocomagua,sendoquesomenteosconectores
doLM35esuabaseforamimpermeabilizadascomsilicone.Assim,comocontatodiretoda
guacomoencapsulamento,atrocadecalorentreesteltimoeaguaficoumaisrpida,
resultandoemumabaixainrcianotempoderespostadosensor.
6.3Concluses
Verificouse atravs dos testes que o mtodo de controle proposto neste trabalho
apresentou resultados satisfatrios, pois a temperatura desejada foi alcanada aps
aproximadamente40segundos.Assim,podeseconcluirqueestemtododevefuncionar
tambm para controlar registros de gua em sistemas hidrulicos residencias, com o
objetivodeestabilizaratemperatura.
75
6.4Trabalhosfuturos
Osseguintestrabalhosfuturospoderiamviraserrealizados:
Desenvolvimentodeumprottiporeal(isto,paraumainstalaohidrulicareal),
commotoresdepassoacopladosaosregistrosdegua,assimcomofoiproposto
nestetrabalho
Estudo da influncia da alterao das funes de pertinncia no desempenho do
controlador
Compararaocomoutrastcnicasdecontrole
Especificaodemtodosparacalibraodosensor,paraqueatemperaturalidaseja
defatoatemperaturareal
76
ARefernciasBibliogrficas
[1Driankovetal.,1995]
AnIntroductiontoFuzzyControl
D.Driankov,H.Hellendorn,M.Reinfrank
SecondEdition,SpringerVerlag1995
[2LiXinWang,1994]
AdaptiveFuzzySystemsandControl
LiXinWang
FirstEdition,PrenticeHall,1994
[3ZhiqiangGaoetal.]
AStableSelfTuningFuzzyLogicControlSystemforIndustrialTemperatureRegulation
ZhiqiangGao,ThomasA.TrautzschandJamesG.Dawson
[4Ogata,2003]
TeoriadeControleModerno
KatsuhikoOgata
EditoraPearson,4aedio,2003
[5WitoldPedrycz,1993]
Fuzzycontrolandfuzzysystems
WitoldPedrycz
FirstEdition,1993
[6ToshiroTeranoetal.,1994]
Appliedfuzzysystems
ToshiroTerano,KiyojiAsai,MichioSugeno,1994
[7RobertJMarks,1994]
Fuzzylogictechnologyandapplications
RobertJMarks,1994
[8IanS.Shawetal.,2001]
Controleemodelagemfuzzy
IanS.Shaw,MarceloGodoySimes,2001
77
BBibliografiaAdicional
SDCCCompilerUserGuide
http://sdcc.sourceforge.net/doc/sdccman.html/
ManualdoKitDidticodo8051
DisponvelnoLaboratriodemicroprocessadoresdoPCS,EPUSP
ManualdoDriverOptoDCMotorController
Fabricante:ETT
DatasheetdoLM35
Fabricante:NationalSemiconductor
http://www.national.com/mpf/LM/LM35.html
PginawebdadisciplinaPCS2497LaboratriodeProcessadoresI
http://www.pcs.usp.br/~pcs2497/
PginawebdadisciplinaPCS2498LaboratriodeProcessadoresII
http://www.pcs.usp.br/~pcs2498/
Tutorialonlinedomicrocontrolador8051
http://www.8052.com/tut8051
FuzzyLogic:APracticalApproach
F.MartinMcNeill,EllenThro
FirstEdition,AcademicPress,1994
TheFoundationsofFuzzyControl
HaroldW.Lewis,III
FirstEdition,PlenumPress,1997
78
CCdigofontedoProttipo
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
====================================
digiducha
Termostato digital para chuveiros com aquecimento central
====================================
Nome do arquivo: digiducha_v2.c
Versao: 2
Data: 30/12/2008
Obs1: oscilador de 11,0592 MHz
Obs2: para compilar para o kit do 8051, use o comando:
sdcc --xram-loc 0x8000 --code-loc 0xA000 <nome do arquivo>
====================================
Autor: Roberto Thiele (bob.thiele@gmail.com)
====================================
#include <8051.h>
// Constantes dos perifericos
// ===================
#define
#define
#define
#define
79
// ============
__xdata volatile long int __tempo;
__xdata volatile float _tempo_k;
__xdata volatile float tempo_aux;
__xdata volatile float _dc_Q;
__xdata volatile float _dc_F;
__xdata
__xdata
__xdata
__xdata
__xdata
__xdata
__xdata
__xdata
__xdata
volatile
volatile
volatile
volatile
volatile
volatile
volatile
volatile
volatile
byte _N0_L;
byte _N0_H;
unsigned int _N0;
byte _N1_L;
byte _N1_H;
unsigned int _N1;
byte _N2_L;
byte _N2_H;
unsigned int _N2;
__bit _dc_menorQ;
__xdata volatile float _temperatura_setpoint;
__xdata volatile float _fator_pot;
__xdata volatile byte _ligado;
__xdata volatile byte _ligou;
__xdata volatile byte _tipo_inferencia;
// Dispositivos mapeados na memoria
// ========================
// Termometro mapeado em memoria
byte
far at @ADC adc;
// Display
byte
far
byte
far
byte
far
byte
far
mapeado em memoria
at @WDATA wdata;
at @RDATA rdata;
at @WCOMMAND wcommand;
at @RSTATUS rstatus;
display_comando(byte cmd);
display_espera();
display_escreve(byte car);
display_escreveString(byte *string);
display_inicializa();
display_limpa();
display_linha(byte lin);
80
void
void
void
void
// <
terminal_escreve(byte dado);
terminal_escreveString(byte *string);
terminal_escreveNumero(__xdata float num);
terminal_novaLinha();
====================================
81
j+= 2*PASSO;
}
return(res);
}
//=======================================================
// Inferencia : Funcoes de pertinencia
//=======================================================
// Funcao de pertinencia 'negativo Grande'
float nG(__xdata float x)
{
if (x > -E2) {
return(0);
} else if (x < -E3) {
return(1);
} else {
return((float) (x + E2)/(-E3 + E2));
}
}
// Funcao de pertinencia 'negativo Medio'
float nM(__xdata float x)
{
return(f_triangular(x,-E3,-E2,-E1));
}
// Funcao de pertinencia 'negativo Pequeno'
float nP(__xdata float x)
{
return(f_triangular(x,-E2,-E1,0));
}
// Funcao de pertinencia 'Zero'
float Z(__xdata float x)
{
return(f_triangular(x,-E1,0,E1));
}
// Funcao de pertinencia 'positivo Pequeno'
float pP(__xdata float x)
{
return(f_triangular(x,0,E1,E2));
}
// Funcao de pertinencia 'positivo Medio'
float pM(__xdata float x)
{
return(f_triangular(x,E1,E2,E3));
}
// Funcao de pertinencia 'positivo Grande'
float pG(__xdata float x)
{
if (x < E2) {
return(0);
} else if (x > E3) {
return(1);
} else {
return((float) (x - E2)/(E3 - E2));
}
}
//=======================================================
// Inferencia: Execucao da inferencia nebulosa
//=======================================================
float inferencia_nebulosa(__xdata float erro, __xdata float delta_erro)
{
__xdata byte cont; // contador generico
__xdata byte is_erro[7]; // vetor dos coeficientes de disparo do erro
__xdata byte is_delta_erro[7]; // vetor dos coeficientes de disparo do delta_erro
__xdata float numerador; // numerador da defuzificacao CoS
__xdata float denominador; // denominador da defuzificacao CoS
__xdata float delta_u; // variacao da variavel de controle u (delta_u(k))
// graus de pertinencia maximos de cada funcao de pertinencia do consequente
82
83
84
85
DEFUZIFICACAO
calcula a parcela do numerador e do denominador
de cada funcao de pertinencia do consequente
(max_fB > 0) {
// calcula as parcelas correspondentes da funcao 'feche Bastante'
numerador += integral(max_fB, -U4, -U3, -U2);
denominador += area_f_triangular(max_fB, -U4, -U2);
}
if (max_fP > 0) {
// calcula as parcelas correspondentes da funcao 'feche Pouco'
numerador += integral(max_fP, -U3, -U2, -U1);
denominador += area_f_triangular(max_fP, -U3, -U1);
}
if (max_fS > 0) {
// calcula as parcelas correspondentes da funcao 'feche Sutilmente'
numerador += integral(max_fS, -U2, -U1, 0);
denominador += area_f_triangular(max_fS, -U2, 0);
}
if (max_M > 0) {
// calcula as parcelas correspondentes da funcao 'Mantenha'
numerador += integral(max_M, -U1, 0, U1);
denominador += area_f_triangular(max_M, -U1, U1);
}
if (max_aS > 0) {
// calcula as parcelas correspondentes da funcao 'abra Sutilmente'
numerador += integral(max_aS, 0, U1, U2);
denominador += area_f_triangular(max_aS, 0, U2);
}
if (max_aP > 0) {
// calcula as parcelas correspondentes da funcao 'abra Pouco'
numerador += integral(max_aP, U1, U2, U3);
denominador += area_f_triangular(max_aP, U1, U3);
}
if (max_aB > 0) {
// calcula as parcelas correspondentes da funcao 'abra Bastante'
numerador += integral(max_aB, U2, U3, U4);
denominador += area_f_triangular(max_aB, U2, U4);
}
if (denominador != 0)
delta_u = (__xdata float) numerador/denominador;
else
delta_u = 0;
86
return(delta_u);
}
//=======================================================
// Perifericos : Bombas
//=======================================================
// Liga a bomba
void bomba_liga()
{
bomba_potenciaF(_fator_pot * 100);
bomba_potenciaQ(0);
}
// Desliga a bomba
void bomba_desliga()
{
// coloca a potencia das bombas em zero
bomba_potenciaQ(0);
bomba_potenciaF(0);
PWM_Q = 0;
PWM_F = 0;
}
// Faz o ajuste de potencia da bomba de agua quente
void bomba_potenciaQ(__xdata float potenciaQ)
{
// transforma potencia 0-100 em duty-cycle 50%-95%
if (potenciaQ == 0)
_dc_Q = 0.10; // coloca duty cycle baixo p/ potencia zero
else
_dc_Q = 0.50 + 0.0045*potenciaQ;
}
// Faz o ajuste de potencia da bomba de agua fria
void bomba_potenciaF(__xdata float potenciaF)
{
// transforma potencia 0-100 em duty-cycle 50%-95%
if (potenciaF == 0)
_dc_F = 0.10;
else
_dc_F = 0.50 + 0.0045*potenciaF;
}
//=======================================================
// Perifericos : Termometro
//=======================================================
// Le o valor do ADC e o converte para graus Celsius
float termometro_leitura()
{
__xdata float r = 0;
adc = 0xFF; // dispara a conversao A/D
r = (float) (100*adc)/255;
return(r);
}
//=======================================================
// Perifericos : Display
//=======================================================
// Envia comandos ao display
void display_comando(byte cmd)
{
display_espera(); // espera Busy Flag
wcommand = cmd;
}
// Espera busy flag
void display_espera()
{
// testa busy flag (BF = bit7 de rstatus)
87
//
//
//
//
//
2 linhas 5x7
cursor com autoincremento para a direita
liga display & cursor
limpa display & cursor home
sem cursor
display_limpa();
}
// Limpa o display
void display_limpa()
{
display_comando(0x01);
}
// Seleciona a linha do display (1a ou 2a)
void display_linha(byte lin)
{
if (lin == 1)
display_comando(0x80); // desloca cursor 1a.lin e 1a.col
else
display_comando(0xC0); // desloca cursor 2a.lin e 1a.col
}
//=======================================================
// Perifericos : Terminal Serial
//=======================================================
// Envia um caractere ao terminal serial
void terminal_escreve(byte dado)
{
while(!TI);
TI = 0;
SBUF = dado;
while(!TI);
}
// Escreve uma string de bytes no terminal serial
void terminal_escreveString(byte *string)
{
while(*string != '$') {
terminal_escreve(*string);
string++;
}
}
// Escreve um numero x no terminal, -999.99 < x < 999.99
void terminal_escreveNumero(__xdata float num)
{
// escreve o sinal do numero
if (num < 0)
terminal_escreve('-');
else
terminal_escreve('+');
88
// escreve a centena
terminal_escreve(centena(abs(num)));
// escreve a dezena
terminal_escreve(dezena(abs(num)));
// escreve a unidade
terminal_escreve(unidade(abs(num)));
// escreve o ponto
terminal_escreve('.');
// escreve a primeira casa decimal
terminal_escreve(decimal1(abs(num)));
// escreve a segunda casa decimal
terminal_escreve(decimal2(abs(num)));
}
// Posiciona o cursor em uma nova linha no terminal serial
void terminal_novaLinha()
{
terminal_escreve(0x0A); // line feed
terminal_escreve(0x0D); // carriage return
}
//=======================================================
// Interrupcoes
//=======================================================
// Inicializa as interrupcoes
void interrupcao_inicializa()
{
/* Insere instrucoes de desvio para o endereco das rotinas
de tratamento de interrupcao. Obs: isso somente eh necessario
se o programa monitor estiver presente na memoria */
__xdata int *aux;
// interrupcao timer 0: 02A00BFF @ 0xFFF3
aux = (__xdata int *) 0xFFF3;
*aux = 0xA002;
aux = (__xdata int *) 0xFFF5;
*aux = 0xFF0B;
// interrupcao serial: 02A023FF @ 0xFFFC
aux = (__xdata int *) 0xFFFC;
*aux = 0xA002;
aux = (__xdata int *) 0xFFFE;
*aux = 0xFF23;
// configuracao de interrupcoes
EA = 1; // [1:habilita , 0:desabilita] interrupcoes
ET0 = 1; // [1:habilita , 0:desabilita] interrupcao do timer0
EX0 = 0; // [1:habilita , 0:desabilita] interrupcao externa 0
EX1 = 0; // [1:habilita , 0:desabilita] interrupcao externa 1
ES = 1; // [1:habilita , 0:desabilita] interrupcao serial
}
// Tratamento da interrupcao do timer0 em 0x000B
void interrupcao_timer0() interrupt 1 using 2
{
static int estado = 0;
TF0 = 0; // limpa o 'flag' de estouro do timer0
switch(estado) {
case 0: // coloca os sinais em alto
// incrementa a contagem de tempo (a cada 0.01 s)
__tempo++;
PWM_Q = PWM_F = 1;
TL0 = _N0_L;
TH0 = _N0_H;
estado++;
break;
89
case 1:
if (_N1 == 0) { // dcQ e dcF sao iguais
estado = 0;
PWM_Q = PWM_F = 0;
TL0 = _N2_L;
TH0 = _N2_H;
} else if (_dc_menorQ == 1) { // dcQ eh o menor
PWM_Q = 0;
TL0 = _N1_L;
TH0 = _N1_H;
estado++;
} else { // dcF eh o menor
PWM_F = 0;
TL0 = _N1_L;
TH0 = _N1_H;
estado++;
}
break;
case 2: // coloca os sinais em zero
PWM_Q = PWM_F = 0;
TL0 = _N2_L;
TH0 = _N2_H;
estado = 0;
break;
default:
TL0 = _N0_L;
TH0 = _N0_H;
estado = 1;
break;
}
TR0 = 1; // dispara o timer0
}
// Tratamento da interrupcao serial em 0x0023
void interrupcao_serial() interrupt 4 using 3
{
ES = 0; // desabilita int. serial
ET0 = 0; // desabilita int. timer0
if (RI == 1) {
RI = 0;
TI = 1;
iu_comando(SBUF); // executa o comando recebido
}
if (TI == 1)
TI = 0;
ES = 1; // reabilita int. serial
ET0 = 1; // reabilita int. timer0
}
//=======================================================
// Conversao de numero para ASCII
//=======================================================
// Retorna o valor absoluto do numero x
float abs(__xdata float x)
{
if (x >= 0)
return(x);
else
return(-x);
}
// Retorna em ASCII a centena do numero x
byte centena(__xdata float x)
{
byte res;
res = (byte) ((((int) x)%1000)/100) + 0x30;
return(res);
}
90
91
display_escreveString(" I:$");
if (_fator_pot == 1)
display_escreve('3');
else if (_fator_pot == 0.75)
display_escreve('2');
else
display_escreve('1');
// APRESENTA A TEMPERATURA ATUAL (MEDIDA)
display_linha(2); // seleciona a segunda linha do display
display_escreveString("T_at:$");
// dezena
aux = dezena(temperatura_atual);
display_escreve(aux);
// unidade
aux = unidade(temperatura_atual);
display_escreve(aux);
// ponto
display_escreve(0x2E);
// primeira casa decimal
aux = decimal1(temperatura_atual);
display_escreve(aux);
// simbolo de graus celsius
display_escreve(0xDF);
display_escreve('C');
// APRESENTA O TEMPO DECORRIDO
display_escreveString("
$");
if (_ligado == 1) {
// centena
aux = centena(_tempo_k);
display_escreve(aux);
// dezena
aux = dezena(_tempo_k);
display_escreve(aux);
// unidade
aux = unidade(_tempo_k);
display_escreve(aux);
} else {
display_escreveString("OFF$");
}
}
// Le e executa o comando
void iu_comando(byte cmd)
{
switch (cmd) {
case '1': // liga o sistema
if (_ligado == 0) {
terminal_novaLinha();
terminal_escreveString("[Sistema Ligado]$");
terminal_novaLinha();
TR0 = 1; // dispara o timer0
_ligado = 1;
_ligou = 1;
bomba_liga();
}
break;
case '0': // desliga o sistema
if (_ligado == 1) {
terminal_novaLinha();
terminal_escreveString("[Sistema Desligado]$");
terminal_novaLinha();
ET0 = 0; // desabilita interrupcao do timer0
TR0 = 0; // desliga o timer0
TF0 = 0; // limpa o 'flag' de estouro do timer0
92
case
case
case
case
case
_ligado = 0;
_ligou = 0;
bomba_desliga();
__tempo = tempo_aux = 0;
iu_menu();
} else {
terminal_escreveString("[O sistema nao esta ligado!]$");
}
break;
'+': // incrementa a temperatura desejada
//terminal_escreveString("Incrementa Temperatura$");
if (_temperatura_setpoint < SP_MAX)
_temperatura_setpoint += 0.10;
break;
'-': // decrementa a temperatura desejada
//terminal_escreveString("Decrementa Temperatura$");
if (_temperatura_setpoint > SP_MIN)
_temperatura_setpoint -= 0.10;
break;
'>': // incrementa a intensidade
if (_fator_pot < 1)
_fator_pot += 0.25;
break;
'<': // decrementa a intensidade
if (_fator_pot > 0.5)
_fator_pot -= 0.25;
break;
'C': // altera tipo de inferencia usada
_tipo_inferencia++;
if (_tipo_inferencia == 4) {
terminal_escreveString("[Selecionado
_tipo_inferencia = 0;
} else if (_tipo_inferencia == 1) {
terminal_escreveString("[Selecionado
} else if (_tipo_inferencia == 2) {
terminal_escreveString("[Selecionado
} else if (_tipo_inferencia == 3) {
terminal_escreveString("[Selecionado
controle nebuloso-PI]$");
controle P]$");
controle PI]$");
controle 'variacao
constante']$");
}
terminal_novaLinha();
break;
default: // comando invalido
terminal_escreveString("[Comando invalido!]$");
terminal_novaLinha();
break;
}
}
// Apresenta o menu de comandos
void iu_menu()
{
terminal_novaLinha();
terminal_novaLinha();
terminal_escreveString("digiducha - Termostato digital para chuveiros com aquecimento
central$");
terminal_novaLinha();
terminal_novaLinha();
terminal_escreveString("Comandos:$");
terminal_novaLinha();
terminal_escreveString("+ : incrementa a temperatura desejada$");
terminal_novaLinha();
terminal_escreveString("- : decrementa a temperatura desejada$");
terminal_novaLinha();
terminal_escreveString("> : incrementa a intensidade$");
terminal_novaLinha();
terminal_escreveString("< : decrementa a intensidade$");
terminal_novaLinha();
terminal_escreveString("C : altera metodo de controle entre nebuloso-PI, P, PI e variacao
constante$");
terminal_novaLinha();
terminal_escreveString("1 : liga$");
terminal_novaLinha();
93
terminal_escreveString("0 : desliga$");
terminal_novaLinha();
terminal_novaLinha();
}
//=======================================================
// Rotina Principal
//=======================================================
void main()
{
__xdata
__xdata
__xdata
__xdata
__xdata
__xdata
__xdata
__xdata
__xdata
94
} else {
_dc_menorQ = 0;
_N0 = (unsigned int)
_N0_L = _N0 & 0xFF;
_N0_H = (_N0 >> 8) &
_N1 = (unsigned int)
_N1_L = _N1 & 0xFF;
_N1_H = (_N1 >> 8) &
_N2 = (unsigned int)
_N2_L = _N2 & 0xFF;
_N2_H = (_N2 >> 8) &
}
}
// le a temperatura do termometro
temperatura_atual = termometro_leitura();
95
}
// Atua nas bombas
bomba_potenciaQ(_fator_pot * potQ);
bomba_potenciaF(_fator_pot * potF);
// Escreve os dados do processo no terminal serial
TI = 1;
terminal_novaLinha();
terminal_escreveString("tempo=$");
terminal_escreveNumero((float) ((int)_tempo_k));
terminal_escreveString(" : $");
terminal_escreveString("Temperatura_setpoint=$");
terminal_escreveNumero(_temperatura_setpoint);
terminal_escreveString(", Temperatura_medida=$");
terminal_escreveNumero(temperatura_atual);
terminal_novaLinha();
terminal_escreveString("erro=$");
terminal_escreveNumero(erro);
terminal_escreveString(", delta_err=$");
terminal_escreveNumero(delta_erro);
terminal_escreveString(", delta_u=$");
if (tipo_controle == 'q') {
terminal_escreveNumero(delta_u);
terminal_escreveString("(Q)$");
} else {
terminal_escreveNumero(-delta_u);
terminal_escreveString("(F)$");
}
terminal_novaLinha();
terminal_escreveString("potencia Quente=$");
terminal_escreveNumero(_fator_pot * potQ);
terminal_escreveString(", potencia Frio=$");
terminal_escreveNumero(_fator_pot * potF);
terminal_novaLinha();
// verifica se o tipo de controle deve ser trocado
// (de Q para F ou de F para Q).
if (potQ == 100 && potF == 100) {
if (tipo_controle == 'q' && delta_u > 0) {
// troca Q -> F
tipo_controle = 'f';
} else if (tipo_controle == 'f' && delta_u < 0) {
// troca F -> Q
tipo_controle = 'q';
}
}
tempo_aux = _tempo_k;
ES = 1; // reabilita int. serial
} else {
ES = 0; // desabilita int. serial
// apresenta alguns dados do processo no display
iu_display(temperatura_atual);
ES = 1; // reabilita int. serial
}
}
}
96