Escolar Documentos
Profissional Documentos
Cultura Documentos
Aprovada por:
Orientador:
Prof. Walter Issamu Suemitsu, Dr.Ing
Examinador:
Prof. Sergio Sami Hazan, Ph.D.
Examinador:
Eng. Werner Spolidoro Freund, M.Sc
Agradeço aos meus pais Rosangela e Diniz, pois me apoiaram e confiaram nas minhas
decisões.
Agradeço aos meus amigos pelo grande apoio que me deram e pelos momentos de
descontração, pois desta forma, agregaram muita importância para a realização deste trabalho.
ii
RESUMO
iii
Índice
1. Introdução ...................................................................................................... 1
iv
8. O Software FIS .......................................................................................................... 36
v
Índice de Figuras
vi
Figura 31 – Resultados parciais para a configuração indicada ............................................ 49
Figura 32 – Resultados finais das baterias para a configuração indicada ............................ 52
Figura 33 – Resultados finais dos módulos para a configuração indicada ........................... 53
Figura 34 – Resultados finais dos controladores para a configuração indicada ................... 53
Figura 35 – Resultados finais do espaço ocupado pelo arranjo para a configuração indicada
............................................................................................................................................... 54
vii
Índice de Tabelas e Planilhas
viii
Lista de Símbolos Utilizados
ix
γ Ângulo de incidência
δ Declinação solar
θ Ângulo zenital
ω Ângulo horário do sol
x
1. INTRODUÇÃO
Um grande marco foi estabelecido a partir da Revolução Industrial, quando houve uma
necessidade no aumento do consumo energético das indústrias. Como consequência, a
exploração e utilização dos combustíveis fósseis foram enormes, uma vez que esses produzem
quantidades significativas de energia por unidade de massa. O fato de os mesmos serem
recursos finitos e com tempo de reposição na natureza muito superior ao tempo de vida de
humanos, faz deles fontes de energia não renováveis, o que gerou um aumento pelo interesse
por fontes de energia renováveis. Além disso, os combustíveis fósseis causam problemas
ambientais severos como a intensificação do efeito estufa e chuvas ácidas. Consequências
graves desses problemas são as doenças de pele e respiratórias agravadas ou geradas em
muitas pessoas, principalmente as que vivem perto de grandes centros industriais [15].
A energia solar pode ser convertida basicamente em dois tipos: energia térmica ou
elétrica. A conversão térmica é utilizada para o aquecimento de água em residências, hotéis e
hospitais, mas também pode servir para gerar energia elétrica através do acionamento de
turbinas a vapor. Já a outra forma de se obter energia elétrica por meio da energia solar é
utilizar sistemas fotovoltaicos, ou seja, a radiação solar é convertida em energia elétrica para o
uso em circuitos eletroeletrônicos ou em circuitos que requerem maior potência.
1.1. OBJETIVO
2
para manter um determinado consumo de energia e como deve ser à disposição dos mesmos,
juntamente com a distância mínima entre módulos.
3
Finalmente as conclusões e sugestões de trabalhos futuros são apresentadas no
capítulo 10.
4
2. SISTEMAS FOTOVOLTAICOS
Os sistemas fotovoltaicos podem ser ligados ou não à rede elétrica, e são classificados
basicamente em três categorias: sistemas híbridos, isolados ou conectados à rede. A escolha
para cada uma dessas configurações dependerá de uma série de fatores como o investimento,
custo de manutenção, área disponível, finalidade etc.
Os sistemas isolados são os que não estão conectados à rede elétrica, utilizando
somente a energia gerada pelo arranjo fotovoltaico [1], necessitando de alguma forma de
armazenamento da energia gerada. A forma mais comum de armazenar é através do uso de
baterias. Deste modo, deve-se utilizar uma unidade de controle para que as baterias não se
descarreguem por completo ou que o carregamento das mesmas seja de forma controlada.
Uma unidade de condicionamento de potência, como o inversor é necessário para converter a
tensão contínua em alternada ou um conversor, caso a tensão de algum aparelho seja em
corrente contínua e seja diferente da tensão do sistema. Algumas vezes não há a necessidade
de armazenamento, como por exemplo, nos sistemas de irrigação em que toda água bombeada
é imediatamente usada. Um esquema de um sistema isolado é mostrado na Figura 1.
5
2.2. SISTEMAS HÍBRIDOS
Os sistemas híbridos ou mistos são aqueles que não estão conectados a rede elétrica e
possuem mais de uma forma de geração de energia além da geração fotovoltaica, como por
exemplo, gerador diesel, turbina eólica ou qualquer outra fonte de energia [1]. Este tipo de
sistema é mais complexo, pois necessita de um controle capaz de integrar os vários geradores.
A Figura 2 ilustra este tipo de sistema.
6
2.3. SISTEMAS CONECTADOS À REDE
Sistemas conectados à rede são aqueles em que o arranjo fotovoltaico representa uma
fonte complementar para a instalação [1]. Normalmente não há armazenamento de energia já
que a energia produzida é injetada na rede, sendo necessário o uso de inversores. Quando a
geração fotovoltaica for maior que o consumo da instalação o excesso de energia é
direcionado para a rede elétrica. Já quando a geração é insuficiente, a parte da energia que
falta para a instalação funcionar corretamente ou por completo é fornecida pela rede. A Figura
3 mostra este tipo de sistema.
7
3. RADIAÇÃO SOLAR E O EFEITO FOTOVOLTAICO
O Sol é uma excelente fonte energética, pois a parcela de radiação que atinge a
superfície da Terra corresponde a uma quantidade de energia de 1,5x1018 kWh/ano. Se
comparado ao consumo mundial durante o mesmo período, seu valor é 10.000 vezes maior
[1]. Isto mostra o grande potencial que a energia solar possui e justifica as pesquisas feitas
para o aperfeiçoamento e desenvolvimento dessa tecnologia. Como explicado a seguir, apenas
uma pequena parte dessa energia pode ser utilizada nas aplicações.
9
Radiação diária média mensal [kwh/m 2 .dia]
# Ângulo Inclinação Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez Média Delta
Plano
0° N 4,61 4,61 3,81 3,28 2,81 3,22 3,78 4,08 4,02 4,22 5,06 4,81 4,03 2,25
Horizontal
Ângulo
igual a 23° N 4,21 4,41 3,88 3,61 3,34 4,14 4,85 4,79 4,24 4,12 4,65 4,33 4,21 1,51
latitude
Maior
média 21° N 4,26 4,44 3,89 3,60 3,31 4,08 4,78 4,75 4,24 4,14 4,71 4,39 4,22 1,47
anual
Maior
mínimo 43° N 3,56 3,87 3,60 3,58 3,49 4,53 5,28 4,94 4,05 3,68 3,94 3,61 4,01 1,79
mensal
Em seu movimento anual, a Terra descreve uma trajetória elíptica em um plano que é
inclinado de aproximadamente 23,5º com relação ao plano equatorial. Esta inclinação é
responsável pela variação do Sol no horizonte em relação à mesma hora ao longo dos dias
dando origem às estações do ano. A posição angular do sol, ao meio-dia solar, em relação ao
plano do Equador (norte positivo), é chamada de declinação solar (δ) e esta varia de acordo
com o dia do ano dentro do intervalo de: -23,5º ≤ δ ≤ 23,5º [1]. A Figura 6 ilustra a
declinação.
10
A geometria dos raios solares que variam com o movimento aparente do Sol e a
superfície terrestre é descrita através de vários ângulos, que serão descritos a seguir [1]:
Ângulo de incidência (γ): ângulo formado entre os raios do Sol e a normal à superfície
de captação.
Ângulo Azimutal do Sol (as): ângulo entre a projeção do raio solar no plano horizontal
e a direção Norte-Sul. Obedece à mesma convenção acima.
Altura Solar (α): ângulo compreendido entre o raio solar e a projeção do mesmo sobre
um plano horizontal.
Ângulo Zenital (θ): ângulo formado entre os raios solares e a vertical (Zênite).
11
Figura 7 – Representação dos ângulos.
Os átomos de silício possuem quatro elétrons de valência que se ligam aos seus
vizinhos formando uma rede cristalina. Ao adicionarem-se átomos de fósforo no cristal, que
possuem cinco elétrons de ligação, haverá um elétron em excesso que ficará fracamente
ligado ao seu átomo de origem. Assim com pouca energia térmica, este elétron consegue se
libertar indo para a banda de condução. Em contra partida, se forem introduzidos átomos de
boro, que possuem três elétrons de ligação, haverá falta de um elétron, que é conhecido como
buraco ou lacuna. Deste modo, com pouca energia térmica, um elétron de um átomo vizinho,
pode passar para esta posição, fazendo com que o buraco se desloque [1].
12
Se a partir de um cristal de silício puro, forem introduzidos átomos de boro em uma
metade e átomos de fósforo em outra, será formada uma junção, conhecida como junção pn.
Nesta junção os elétrons livres de um lado são atraídos pelas lacunas do outro, o que gera um
acúmulo de cargas positivas de um lado e cargas negativas do outro resultando em um campo
elétrico permanente que dificulta a continuação deste processo de recombinação de cargas,
como mostra a Figura 8.
Se esta junção for exposta a fótons com energia suficiente, ocorrerá a geração de pares
elétron-lacuna. Se esta situação ocorrer na região onde o campo elétrico for diferente de zero,
as cargas serão aceleradas, gerando assim uma corrente através da junção. Este deslocamento
de cargas é conhecido como Efeito Fotovoltaico e dá origem a uma diferença de potencial. Se
nesse estado, o cristal de silício for conectado a um circuito externo, haverá a circulação de
corrente elétrica enquanto durar a radiação incidente sobre ele.
13
4. COMPONENTES BÁSICOS DE UM SISTEMA FOTOVOLTAICO
Silício Amorfo : Sua participação do mercado chega a 3,7% e seu rendimento é cerca
de 7%. Sua vantagem é a fabricação de produtos de baixo custo em grande escala e
pode ter formatos variados.
14
CIGS (Células de Filme Fino): Tem a participação de somente 0,2% do mercado e
possui rendimento de 13%. Produzem uma tensão mais elevada que o silício
monocristalino e policristalino além de terem tamanhos e formatos variados, podendo
se adaptar a diferentes superfícies.
Estes valores de rendimento variam ao longo do tempo, pois várias pesquisas são
realizadas para encontrar materiais com maiores rendimentos e custo razoável.
15
4.2. MÓDULOS FOTOVOLTAICOS
Uma célula gera pouca energia elétrica, sendo necessário o agrupamento de várias
outras conectadas para fornecer uma quantidade razoável de energia. Este agrupamento é
chamado de módulo fotovoltaico. O conjunto de células é conectado em série através de tiras
metálicas, que são soldaldas tanto na parte traseira, quanto na parte frontal da célula seguinte.
No módulo a face que recebe a radiação solar é coberta geralmente por vidro temperado
transparente, com baixo índice de refração, resistência à degradação por radiação ultravioleta
e com boa resistência mecânica. Os lados restantes são cobertos com materiais planos que
conferem proteção ao módulo. Por fim, o conjunto é instalado em uma estrutura metálica
auto-portante, geralmente de alumínio. Usualmente os módulos fotovoltaicos são compostos
de 28 a 40 células [1]. A Figura 10 mostra um módulo padrão.
16
As características mais importantes nos módulos são conseguidas através das curvas
IxV (corrente x tensão) . Nela, pode-se identificar o valor da tensão de circuito aberto (Voc)
do módulo, a corrente de curto-circuito (Isc) e o ponto de potência máxima, que é conhecido
como MPP, que é a abreviatura de “Maximun Power Point”. Este é o ponto da curva em que
se deseja operar e tem-se associado a ele a tensão de potência máxima (Vmpp) e a corrente de
potência máxima (Impp). Geralmente a potência dos módulos é dada pela potência de pico
cuja unidade é Wp. A Figura 11 mostra essa curva.
17
Figura 12 – Variação da curva IxV para radiações diferentes. Extraído de [1].
18
4.3. INVERSORES E CONVERSORES CC-CC
Os conversores CC-CC são utilizados quando se deseja obter uma tensão CC diferente
das baterias e dos painéis solares elevando ou diminuindo a tensão. Sua eficiência depende do
tipo de semicondutor utilizado, do fator de multiplicação da tensão, da potência nominal etc.
Geralmente possuem sistemas de proteção contra curto-circuitos e sobretensão.
Um recurso interessante que pode ou não estar contido nos inversores ou nos
conversores CC-CC é um dispositivo chamado de MPPT, abreviatura de “Maximum Power
Point Tracker”, que serve para otimizar o ponto de operação do arranjo, regulando a tensão e
a corrente para que o mesmo esteja sempre no ponto de máxima potência.
19
4.4. BATERIA
A carga de uma bateria está relacionada com a corrente fornecida à mesma para
restabelecer sua capacidade máxima e a descarga é exatamente o oposto, ou seja, está
relacionada com a corrente que é extraída da mesma a partir de sua capacidade máxima. A
sequência de carga e descarga é conhecida como ciclo e para ser realizado, a bateria deve ser
recarregável, diferindo das não recarregáveis que só podem ser utilizadas apenas por um
determinado número de ciclos.
Capacidade: Quantidade de energia que a bateria pode entregar durante uma descarga
completa, em ampère-horas. Essa grandeza é influenciada pela temperatura e pela
velocidade da carga e descarga.
21
5. SOFTWARES DE DIMENSIONAMENTO E SIMULAÇÃO DE SISTEMAS
FOTOVOLTAICOS
22
5.1. HOMER
23
5.2. RETSCREEN
24
6. O AMBIENTE DE DESENVOLVIMENTO INTEGRADO LAZARUS
O Lazarus surgiu em 1999 com três colaboradores, Cliff Baeseman, Shane Miller e
Michael A.Hess [3]. Dois desses haviam se envolvido em um projeto anterior, cujo objetivo
era desenvolver um clone para o IDE Delphi®, porém o projeto não prosseguiu. Com o fim
do mesmo, começaram um novo projeto baseado no anterior, que teve o apoio e participação
de outros desenvolvedores, o mesmo viria a se chamar Lazarus, que é uma referência ao
personagem bíblico que foi ressuscitado por Jesus. A versão do Lazarus que foi utilizado neste
projeto é a 0.9.30.4 e o seu ambiente pode ser visto na Figura 16. O Lazarus pode ser obtido
no portal http://www.lazarus.freepascal.org/ através da opção downloads.
.
Figura 16 – O Ambiente de Desenvolvimento Integrado Lazarus.
25
6.1. CARACTERÍSTICAS DO LAZARUS
27
7. O MÉTODO DE DIMENSIONAMENTO E OS CÁLCULOS UTILIZADOS PELO
SOFTWARE FIS
Para o método simplificado deste trabalho, foi utilizado o valor médio mensal da
irradiação solar e da carga do sistema, levando em consideração o mês mais desfavorável. A
forma como esse método é representado é através de planilhas de cálculo, o que facilita e
organiza o dimensionamento. As planillhas que foram importantes para a criação do software
desta dissertação se encontram no livro Manual de Engenharia para Sistemas Fotovoltaicos,
publicado pelo CEPEL-CRESESB. Na realidade, o livro fez a tradução dessas planilhas para a
utilização no Brasil. Originalmente foram desenvolvidas e publicadas pelo SANDIA National
Laboratory, cujo manual original onde elas são encontradas é o “Stand- Alone Photovoltaic
Systems- A Handbook of Recommended Design Practices”.
28
Figura 19 – Planillha de Cálculo de dimensionamento de sistemas Fotovoltaicos.
Extraído [1].
29
Os resultados em que se tem maior interesse são a quantidade de baterias e de módulos
e como esses deverão estar conectados além da quantidade de controladores de carga que
ficarão em paralelo. Para o sucesso desses cálculos foi necessário inserir no software uma
fórmula associada à tensão do módulo para a temperatura mais elevada na qual ele pode se
encontrar, facilitando ainda mais a vida do usuário, já que o mesmo só precisa ter uma ideia
estimada da temperatura e inserí-la no programa para a realização desse cálculo. Esta fórmula
é descrita em (7.2.1) e as grandezas que a compõem são facilmente encontradas nas folhas de
dados dos painéis solares.
– (7.2.1)
Onde:
: Tensão do módulo para a temperatura mais elevada;
θ: Temperatura mais elevada na qual o módulo se encontraria;
coft: Coeficiente de temperatura relacionado com a tensão do módulo;
: Tensão de máxima potência do módulo.
30
Figura 20 – Ilustração da distância mínima entre módulos.
(7.2.2)
Onde:
d: Distância mínima entre módulos em metros;
L: Largura dos módulos em metros;
β: Inclinação dos módulos em graus.
Também foi inserido um cálculo que tem como resultado se a quantidade de módulos
necessários juntamente com a distância mínima entre eles cabe ou não no local reservado para
a instalação do arranjo. As dimensões do local são inseridas no início da aplicação.
31
A Planilha 7.1 mostra como são calculados a capacidade total em Ah e as potências
totais tanto CC quanto CA, portanto corresponde à parte relacionada com as cargas do
sistema.
32
Planilha 7.2 – Variáveis e cálculos das baterias.
33
Planilha 7.3 – Variáveis e cálculos dos módulos.
34
Planilha 7.4 – Variáveis e cálculos da quantidade de módulos no local da instalação.
35
8. O SOFTWARE FIS
36
Tela Inicial
Dimensionamento Dimensionamento
Através das Através das
Cargas Potências
Resultados
Parciais
Bateria
e
Painéis
Controlador
de
Carga
Resultados
Após selecionar a opção de dimensionamento através das cargas, surge a tela para as
escolhas das cargas e dos parâmetros do sistema, como tensão do sistema (12V, 24V, 48V ou
120V), inclinação dos módulos fotovoltaicos e as dimensões do local da instalação do arranjo
como mostra a Figura 23.
37
Figura 23 – Janela de dimensionamento através das cargas.
8.2. AS CARGAS
As cargas que podem ser selecionadas e que são do tipo CC ou CA são: iluminação,
geladeira/freezer e bomba d’água. Essas são cargas essenciais e de uso mais imediato para
locais isolados. Já os eletrodomésticos disponíveis no software (todos CA) são: computador,
liquidificador, televisão, antena parabólica (o receptor de sinal), rádio e ventilador. Todas
essas cargas foram pensadas para o uso em uma comunidade isolada.
38
Figura 24 – Janela de preenchimento da carga iluminação.
Depois de preencher todos os parâmetros das cargas que fazem parte do projeto, é
exibida a janela de resultados parciais, onde são mostradas as potências totais CC e CA, além
da capacidade em Ah (àmpere-horas) que o sistema precisa suprir. Isso pode ser visto na
Figura 25.
39
Figura 25 – Janela de resultados parciais.
40
Figura 26 – Janela de preenchimento das características da bateria e do módulo.
41
Tabela 8.3 – Descrição dos campos associados ao módulo e seus significados.
43
Tabela 8.5 – Os campos da janela resultados.
Baterias
Fabricante Modelo
Tipo Capacidade da Bateria (Ah)
Número Total de Baterias Quantidade em Série
Quantidade em Paralelo Capacidade Útil do Banco (Ah)
Controladores
Fabricante Modelo
Número de Controladores em Paralelo
Módulos
Fabricante Modelo
Peso (Kg) Comprimento (m)
Largura (m) Número Total de Módulos
Quantidade em Série Quantidade em Paralelo
Tensão do Arranjo (V) Corrente do Arranjo (A)
Tensão em aberto do Arranjo (V) Corrente de Curto do Arranjo (A)
Distância mínima entre Módulos (m)
Após a escolha pelo dimensionamento através das potências a tela que se abre é
mostrada na Figura 29. Desta forma pode se dimensionar um sistema sem ter o conhecimento
das cargas, bastando saber o valor da potência total CC e ou CA, o seu ciclo de serviço diário
e semanal e a eficiência de conversão que é o valor associado ao dispositivo inversor ou
conversor. A partir daí todas as janelas que sucedem esta com relação às características de
baterias, módulos fotovoltaicos e controladores de carga são as mesmas da opção de
dimensionamento através das cargas.
44
Figura 29 – Janela de dimensionamento através das potências.
45
9. VALIDAÇÃO DO SOFTWARE
Para a validação do software FIS, foi feita a comparação entre os resultados obtidos
por ele para uma determinada configuração de carga e os resultados obtidos se utilizando das
planilhas que o originaram. Como as planilhas são válidas, se os resultados forem iguais o
software também será.
Primeiro, foi escolhido uma localidade em que não se tinha conexão com a rede
elétrica. Uma comunidade do distrito de Eugênio de Melo em São José dos Campos (SP), que
possui 15 casas e que era conhecida como “Ilha Escura” devido à ausência de energia elétrica
[21].
# Ângulo Inclinação Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez Média Delta
Plano
0° N 5,22 4,92 4,81 4,14 3,64 3,22 3,64 4,17 4,19 4,75 5,39 5,28 208.827,61 1,00
Horizontal
Ângulo
igual a 23° N 4,74 4,70 4,94 4,67 4,50 4,15 4,66 4,92 4,44 4,64 4,95 4,73 4,67 ,80
latitude
Maior
média 21° N 4,80 4,74 4,96 4,65 4,45 4,09 4,59 4,88 4,44 4,67 5,01 4,80 4,67 ,92
anual
Maior
mínimo 32° N 4,43 4,48 4,84 4,73 4,69 4,38 4,90 5,05 4,40 4,46 4,64 4,40 4,62 ,67
mensal
47
Tabela 9.3 – Características principais da bateria Unipower UP121500.
Planilha 9.1 – Valores das variáveis e cálculos das cargas para o caso.
Quantidade × Potência CC (0 W)
=
Potência CC Total da Carga (0 W)
Potência CC Total da Carga (0 W) × hora/ dia × dia/ 7 ÷ Tensão Nominal do Sistema (24
V) ÷ Eficiência de Conversão CC
=
Capacidade CC (0 Ah)
Quantidade(1) × Potência CA(184 W)
Quantidade(5) × Potência CA(55 W)
Quantidade(25) × Potência CA(20 W)
Quantidade(3) × Potência CA(60 W)
Quantidade(1) × Potência CA(135 W)
Quantidade(1) × Potência CA(25 W)
=
Potência CA Total da Carga (1299 W)
Potência CA(184 W) × horas/dia(3) × dias/semana(7) ÷ Tensão Nominal do Sistema (24
V) ÷ Eficiência de Conversão CA(0,8)
Potência CA(275 W) × horas/dia(6) × dias/semana(5) ÷ Tensão Nominal do Sistema (24
V) ÷ Eficiência de Conversão CA(0,8)
Potência CA(500 W) × horas/dia(6) × dias/semana(7) ÷ Tensão Nominal do Sistema (24
V) ÷ Eficiência de Conversão CA(0,8)
Potência CA(180 W) × horas/dia(3) × dias/semana(5) ÷ Tensão Nominal do Sistema (24
V) ÷ Eficiência de Conversão CA(0,8)
Potência CA(135 W) × horas/dia(4) × dias/semana(7) ÷ Tensão Nominal do Sistema (24
V) ÷ Eficiência de Conversão CA(0,8)
Potência CA(25 W) × horas/dia(4) × dias/semana(7) ÷ Tensão Nominal do Sistema (24
V) ÷ Eficiência de Conversão CA(0,8)
=
Capacidade CA (299,81 Ah)
Capacidade CC (0 Ah) + Capacidade CA ( 299,81Ah)
=
Capacidade Total (299,81 Ah)
48
A Figura 31 abaixo mostra a janela dos resultados parciais do programa, o que confere
com os resultados da Planilha 9.1.
49
Planilha 9.2– Valores das variáveis e cálculos das baterias para o caso.
50
Planilha 9.3 – Valores das variáveis e cálculos dos módulos para o caso.
51
Planilha 9.4 – Valores das variáveis e cálculos da quantidade de módulos no local da
instalação para o caso.
Planilha 9.5 – Valores das variáveis e cálculos dos controladores de carga para o caso.
52
Figura 33 – Resultados finais dos módulos para a configuração indicada.
53
Figura 35 – Resultados finais do espaço ocupado pelo arranjo para a configuração indicada.
Verificou-se que os resultados foram exatamente iguais. O que não poderia ser
diferente já que os cálculos foram extraídos das planilhas do livro da referência [1], a não ser
que a programação estivesse com erro. Deve-se atentar para o fato de que o FIS simplesmente
afirma quando o arranjo cabe no local da instalação, como mostrou a Figura 35. Já quando o
espaço é insuficiente ele mostra as quantidades de fileiras e quantidade de módulos por fileira.
54
10. CONCLUSÕES E SUGESTÕES PARA TRABALHOS FUTUROS
Sua interface simples, direta e intuitiva o torna uma ferramenta eficaz para o
dimensionamento de sistemas fotovoltaicos isolados de pequeno porte. O programa fornece
como resultado a quantidade de módulos que são necessários para a geração de energia
solicitada pela carga, juntamente com a distância mínima entre eles a fim de se evitar o
sombreamento. Além disso, fornece a quantidade de baterias que o sistema necessita para o
seu funcionamento, inclusive para os períodos em que não haja irradiação solar. E por fim, a
quantidade de controladores de carga que atuarão em paralelo.
Pela sua simplicidade, o FIS mostra-se como um início para um software mais
completo, sem que com isso perca a sua principal função, que é auxiliar pessoas com pouco
conhecimento na área para que essas sejam capazes de dimensionar um sistema fotovoltaico
isolado. A seguir algumas sugestões para trabalhos futuros:
56
11. BIBLIOGRAFIA
[3] Professor Evandro de Castro Melo,DS , Free Pascal Lazarus, 2011. Disponível em:
< http://www.evandro.eng.br/Apostila-Lazarus.pdf > Acesso em 17 de Fevereiro de 2014 às
22h46min.
[5] Boniati, Bruno B., Caderno Didático Lazarus IDE, 2011. Disponível em:
<http://www.cafw.ufsm.br/~bruno/disciplinas/programacao_comercial1/material/caderno_did
atico_lazarus.pdf > Acesso em 17 de Fevereiro de 2014 às 22h38min.
57
[8] Cresesb-Cepel, Resultados do Sundata. Disponível em:
< http://www.cresesb.cepel.br/sundata/index.php#sundata > Acesso em 17 de Fevereiro de
2014 às 22h17min.
[10] Homer Users Group, How does Homer convert horizontal irradiation into titled
irradiation. Disponível em:
< http://homerusersgroup.ning.com/forum/topics/how-does-homer-convert-horizontal-
irradiation-into-tilted > Acesso em 17 de Fevereiro de 2014 às 22h27min.
[11] Green Toronto, What it Knows about Toronto solar exposure. Disponível em:
< http://www.greentoronto.me/retscreen-what-it-knows-about-toronto-solar-exposure/ >
Acesso em 17 de Fevereiro de 2014 às 22h22min.
58
[16] Wikipédia, Silício. Disponível em:
<http://pt.wikipedia.org/wiki/Silício> Acesso em 17 de Fevereiro de 2014 às 23h45min.
59
ANEXO I – CÓDIGO FONTE DO SOFTWARE FIS
Abaixo está o código fonte de todas as units do software FIS com exceção das cargas,
que neste caso só é mostrada a unit de uma delas, já que todas as outras se diferem apenas
pelo nome de variáveis.
unit u_tela_inicial;
{$mode objfpc}{$H+}
Interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TFormTelaInicial }
TFormTelaInicial = class(TForm)
Button1: TButton;
RadioButtoncargas: TRadioButton;
RadioButtonpotencia: TRadioButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FormTelaInicial: TFormTelaInicial;
xdcargas: boolean =false;
xdpotencia: boolean= false;
implementation
uses u_dimensionamento_cargas,u_dimensionamento_potencia;
{$R *.lfm}
{ TFormTelaInicial }
procedure TFormTelaInicial.Button1Click(Sender: TObject);
begin
{Seleção Cargas}
if (RadioButtoncargas.Checked=true) then
begin
xdcargas:=true;
FormSelecaoDasCargas.Show;
Formtelainicial.Hide;
end;
{Seleção Potência}
60
if (RadioButtonpotencia.Checked=true) then
begin
xdpotencia:=true;
FormSelecaoPotencia.Show;
Formtelainicial.Hide;
end;
end;
end.
unit u_dimensionamento_potencia;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, Menus;
type
{ TFormSelecaoPotencia }
TFormSelecaoPotencia = class(TForm)
Button1: TButton;
EditComprimentoPot: TEdit;
EditdiasemanapotCA: TEdit;
EditdiasemanapotCC: TEdit;
EditefCApot: TEdit;
EditefCCpot: TEdit;
EdithdiapotCA: TEdit;
EdithdiapotCC: TEdit;
EditInclinacaoPot: TEdit;
EditLarguraPot: TEdit;
EditPOTCApot: TEdit;
EditPOTCCpot: TEdit;
Label1: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
61
MainMenu1: TMainMenu;
MenuItemAjuda: TMenuItem;
MenuItemajudainicial: TMenuItem;
MenuItemsobre: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
RadioButton12: TRadioButton;
RadioButton120: TRadioButton;
RadioButton24: TRadioButton;
RadioButton48: TRadioButton;
procedure Button1Click(Sender: TObject);
procedure MenuItemajudainicialClick(Sender: TObject);
procedure MenuItemsobreClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FormSelecaoPotencia: TFormSelecaoPotencia;
VsistemaPot,inclinacaoPot,dcomprimentoPot,dlarguraPot,POTCCPot,POTCAPot,
efCCPot,efCAPot,hdiaPotCC,diasemanaPotCC,hdiaPotCA,diasemanaPotCA,capacidade
Pot,consumoCCPot,consumoCAPot,potTOTALPot: double;
implementation
uses u_ajuda_dim_pot,u_bateria_painel;
{$R *.lfm}
{ TFormSelecaoPotencia }
procedure TFormSelecaoPotencia.Button1Click(Sender: TObject);
begin
{ potências}
POTCCPot:=StrToFloat(EditPOTCCPot.Text);
efCCPot:=StrToFloat(EditefCCPot.Text);
POTCAPot:=StrToFloat(EditPOTCAPot.Text);
efCAPot:=StrToFloat(EditefCAPot.Text);
{ciclo de serviço}
hdiaPotCC:=StrToFloat(EdithdiapotCC.Text);
diasemanaPotCC:=StrToFloat(EditdiasemanapotCC.Text);
hdiaPotCA:=StrToFloat(EdithdiapotCA.Text);
diasemanaPotCA:=StrToFloat(EditdiasemanapotCA.Text);
{tensão do sistema}
if (RadioButton12.Checked=true) then
VsistemaPot:=12;
if (RadioButton24.Checked=true) then
VsistemaPot:=24;
if (RadioButton48.Checked=true) then
VsistemaPot:=48;
if (RadioButton120.Checked=true) then
VsistemaPot:=120;
{cálculo}
62
potTOTALpot:=POTCCPot+POTCAPot;
consumoCCPot:= (POTCCPot*hdiaPotCC*diasemanaPotCC/7)/(efCCPot*VsistemaPot);
consumoCAPot:=
(POTCAPot*hdiaPotCA*diasemanaPotCA/7)/(efCAPot*VsistemaPot);
capacidadePot:= consumoCCPot + consumoCAPot;
capacidadePot:= round(capacidadePot);
{inclinação dos módulos}
inclinacaoPot:=StrToFloat(EditInclinacaoPot.Text);
{dimensões do terreno}
dcomprimentopot:=StrToFloat(EditComprimentoPot.Text);
dlargurapot:=StrToFloat(EditLarguraPot.Text);
FormBateriaPainel.Show;
FormSelecaoPotencia.Hide;
end;
procedure TFormSelecaoPotencia.MenuItemajudainicialClick(Sender: TObject);
begin
FormAjudaDimPot.Show;
end;
procedure TFormSelecaoPotencia.MenuItemsobreClick(Sender: TObject);
begin
Application.MessageBox('Vinícius Bernardo Rosa','FIS aplicação computacional
desenvolvida por :',0);
end;
end.
unit u_dimensionamento_cargas;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, Menus;
type
{ TFormSelecaoDasCargas }
TFormSelecaoDasCargas = class(TForm)
Button1: TButton;
CheckBoxap: TCheckBox;
CheckBoxb: TCheckBox;
CheckBoxg: TCheckBox;
CheckBoxi: TCheckBox;
CheckBoxl: TCheckBox;
CheckBoxpc: TCheckBox;
CheckBoxr: TCheckBox;
CheckBoxt: TCheckBox;
CheckBoxv: TCheckBox;
EditComprimentoCargas: TEdit;
63
EditInclinacaoCargas: TEdit;
EditLarguraCargas: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
MainMenu1: TMainMenu;
MenuItemAjuda: TMenuItem;
MenuItemajudaCargas: TMenuItem;
MenuItemsobre: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
RadioButton12: TRadioButton;
RadioButton120: TRadioButton;
RadioButton24: TRadioButton;
RadioButton48: TRadioButton;
procedure Button1Click(Sender: TObject);
procedure MenuItemajudaCargasClick(Sender: TObject);
procedure MenuItemsobreClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FormSelecaoDasCargas: TFormSelecaoDasCargas;
VsistemaCargas,inclinacaoCargas,dcomprimentoCargas,dlarguraCargas: double;
yiluminacao: boolean= false;
yfreezer: boolean =false;
ybomba: boolean =false;
ycomputador: boolean =false;
yliquidificador: boolean =false;
ytelevisao: boolean =false;
yantena : boolean =false;
yradio: boolean =false;
yventilador: boolean =false;
implementation
uses u_ajuda_dim_cargas,u_iluminacao,u_geladeira,u_bomba_agua,u_pc_liquidificador,
u_tv_antena,u_ventilador_radio;
{$R *.lfm}
{ TFormSelecaoDasCargas }
procedure TFormSelecaoDasCargas.Button1Click(Sender: TObject);
begin
{ seleção das cargas - Primeira tela}
if (CheckBoxi.Checked= true) then {Iluminação}
begin
FormIluminacao.Show;
64
FormSelecaoDasCargas.Hide;
end
else if (CheckBoxg.Checked= true) then {Geladeira}
begin
FormGeladeira.Show;
FormSelecaoDasCargas.Hide;
end
else if (CheckBoxb.Checked= true) then {Bomba}
begin
FormBombadAgua.Show;
FormSelecaoDasCargas.Hide;
end
else if (CheckBoxpc.Checked= true) or (CheckBoxl.Checked= true)then {PC
Liquidificador}
begin
FormComputadorLiquidificador.Show;
FormSelecaoDasCargas.Hide;
end
else if (CheckBoxt.Checked= true) or (CheckBoxap.Checked= true) then
{TV Antena parabólica}
begin
FormTelevisaoAntena.Show;
FormSelecaoDasCargas.Hide;
end
else if (CheckBoxr.Checked= true) or (CheckBoxv.Checked= true) then
{Rádio Ventilador}
begin
FormRadioVentilador.Show;
FormSelecaoDasCargas.Hide;
end;
{ marcação das páginas}
if (CheckBoxi.Checked= true) then
yiluminacao:=true;
if (CheckBoxg.Checked= true) then
yfreezer:=true;
if (CheckBoxb.Checked= true) then
ybomba:= true;
if (CheckBoxpc.Checked= true) or (CheckBoxl.Checked= true)then
begin
ycomputador:=true;
yliquidificador:= true;
end;
if (CheckBoxt.Checked= true) or (CheckBoxap.Checked= true) then
begin
ytelevisao:=true;
yantena:= true;
end;
if (CheckBoxr.Checked= true) or (CheckBoxv.Checked= true) then
begin
yradio:=true;
65
yventilador:=true;
end;
{tensão do sistema}
if (RadioButton12.Checked=true) then
VsistemaCargas:=12;
if (RadioButton24.Checked=true) then
VsistemaCargas:=24;
if (RadioButton48.Checked=true) then
VsistemaCargas:=48;
if (RadioButton120.Checked=true) then
VsistemaCargas:=120;
{inclinação dos módulos}
inclinacaoCargas:=StrToFloat(EditInclinacaoCargas.Text);
{dimensões do terreno}
dcomprimentoCargas:=StrToFloat(EditComprimentoCargas.Text);
dlarguraCargas:=StrToFloat(EditLarguraCargas.Text);
end;
procedure TFormSelecaoDasCargas.MenuItemajudaCargasClick(Sender: TObject);
begin
FormAjudaDimCargas.Show;
end;
procedure TFormSelecaoDasCargas.MenuItemsobreClick(Sender: TObject);
begin
Application.MessageBox('Vinícius Bernardo Rosa','FIS aplicação computacional
desenvolvida por :',0);
end;
end.
unit u_ajuda_dim_pot;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TFormAjudaDimPot }
TFormAjudaDimPot = class(TForm)
Label1: TLabel;
private
{ private declarations }
public
{ public declarations }
end;
var
FormAjudaDimPot: TFormAjudaDimPot;
implementation
66
{$R *.lfm}
end.
unit u_ajuda_dim_cargas;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TFormAjudaDimCargas }
TFormAjudaDimCargas = class(TForm)
Label1: TLabel;
private
{ private declarations }
public
{ public declarations }
end;
var
FormAjudaDimCargas: TFormAjudaDimCargas;
implementation
{$R *.lfm}
end.
unit u_iluminacao;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls;
type
{ TFormIluminacao }
TFormIluminacao = class(TForm)
ButtonPi: TButton;
ButtonZerarcai: TButton;
ButtonZerarcci: TButton;
CA: TLabel;
CC: TLabel;
EditConvPotcai: TEdit;
EditConvPotcci: TEdit;
Editdiasemcai: TEdit;
Editdiasemcci: TEdit;
67
Edithdiacai: TEdit;
Edithdiacci: TEdit;
EditQcai: TEdit;
EditQcci: TEdit;
EditVcai: TEdit;
EditVcci: TEdit;
EditWcai: TEdit;
EditWcci: TEdit;
Label1: TLabel;
Label10: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
Panel1: TPanel;
Panel2: TPanel;
procedure ButtonPiClick(Sender: TObject);
procedure ButtonZerarcaiClick(Sender: TObject);
procedure ButtonZerarcciClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FormIluminacao: TFormIluminacao;
Qcci,Vcci,Wcci,hdiacci,diasemanacci,
Qcai,Vcai,Wcai,hdiacai,diasemanacai,ConvPotcci,ConvPotcai,consumocci,
consumocai,POTCCilum,POTCAilum:Double;
xiluminacaocc:Boolean=false;
xiluminacaoca:Boolean=false;
implementation
uses
u_dimensionamento_cargas,u_geladeira,u_bomba_agua,u_tv_antena,u_ventilador_radio,
u_pc_liquidificador,u_resultados_parciais;
{$R *.lfm}
{ TFormIluminacao }
procedure TFormIluminacao.ButtonZerarcciClick(Sender: TObject);
begin
if EditQcci.Text='' then
begin
xiluminacaocc:=true;
EditQcci.Text:=FloatToStr(0);
68
EditVcci.Text:=FloatToStr(0);
EditWcci.Text:=FloatToStr(0);
Edithdiacci.Text:=FloatToStr(0);
Editdiasemcci.Text:=FloatToStr(0);
EditConvPotcci.Text:=FloatToStr(1);
end;
end;
procedure TFormIluminacao.ButtonZerarcaiClick(Sender: TObject);
begin
if EditQcai.Text='' then
begin
xiluminacaoca:=true;
EditQcai.Text:=FloatToStr(0);
EditVcai.Text:=FloatToStr(0);
EditWcai.Text:=FloatToStr(0);
Edithdiacai.Text:=FloatToStr(0);
Editdiasemcai.Text:=FloatToStr(0);
EditConvPotcai.Text:=FloatToStr(1);
end;
end;
procedure TFormIluminacao.ButtonPiClick(Sender: TObject);
begin
Qcci:=StrToFloat(EditQcci.Text);
Vcci:=StrToFloat(EditVcci.Text);
Wcci:=StrToFloat(EditWcci.Text);
hdiacci:=StrToFloat(Edithdiacci.Text);
diasemanacci:=StrToFloat(Editdiasemcci.Text);
ConvPotcci:=StrToFloat(EditConvPotcci.Text);
Qcai:=StrToFloat(EditQcai.Text);
Vcai:=StrToFloat(EditVcai.Text);
Wcai:=StrToFloat(EditWcai.Text);
hdiacai:=StrToFloat(Edithdiacai.Text);
diasemanacai:=StrToFloat(Editdiasemcai.Text);
ConvPotcai:=StrToFloat(EditConvPotcai.Text);
consumocci:= (Qcci*Wcci*hdiacci*diasemanacci/7)/(ConvPotcci*VsistemaCargas);
consumocai:= (Qcai*Wcai*hdiacai*diasemanacai/7)/(ConvPotcai*VsistemaCargas);
{cálculo de potência}
POTCCilum:= Qcci*Wcci;
POTCAilum:= Qcai*Wcai;
{próxima tela}
if (yfreezer= true) then {Geladeira}
begin
FormGeladeira.Show;
FormIluminacao.Hide;
end
else if (ybomba= true) then {Bomba}
begin
FormBombadAgua.Show;
FormIluminacao.Hide;
end
69
else if (ycomputador= true) or (yliquidificador= true)then {PC Liquidificador}
begin
FormComputadorLiquidificador.Show;
FormIluminacao.Hide;
end
else if (ytelevisao= true) or (yantena= true) then {TV Antena parabólica}
begin
FormTelevisaoAntena.Show;
FormIluminacao.Hide;
end
else if (yradio= true) or (yventilador= true) then {Rádio Ventilador}
begin
FormRadioVentilador.Show;
FormIluminacao.Hide;
end else {Resultado Parcial}
begin
FormResultadoParcial.Show;
FormIluminacao.Hide;
end;
end;
end.
unit u_bateria_painel;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, Buttons, Menus;
type
{ TFormBateriaPainel }
TFormBateriaPainel = class(TForm)
BitBtnResultado: TBitBtn;
EditCoeficienteTemp: TEdit;
EditCompModulo: TEdit;
EditCorrenteCurtoModulo: TEdit;
EditCorrenteModulo: TEdit;
EditdCapBat: TEdit;
EditDias: TEdit;
EditFabricanteBateria: TEdit;
EditFabricanteModulo: TEdit;
EditFatorefBat: TEdit;
EditFatorefFio: TEdit;
EditLargModulo: TEdit;
EditModeloBateria: TEdit;
EditModeloModulo: TEdit;
70
EditPesoModulo: TEdit;
EditProfDesc: TEdit;
EditSolPleno: TEdit;
EditTemperaturaModulo: TEdit;
EditTensaoAbertoModulo: TEdit;
EditTensaoModulo: TEdit;
EditTipoBateria: TEdit;
EditVbat: TEdit;
Label1: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label2: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
Panel2: TPanel;
RadioButtonamorfo: TRadioButton;
RadioButtoncristanilo: TRadioButton;
procedure BitBtnResultadoClick(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FormBateriaPainel: TFormBateriaPainel;
{Bateria-entrada}
dias,SolPleno,ProfDesc,Vbateria,Capbateria,
Fatorfio,FatorBat:Double;
71
fabricantebateria,modelobateria,tipobateria:string;
{cálculo bateria}
CORRENTEpico,capacidadecorrigida,CORRENTEprojeto,CapNecessaria,
numBatParalelo,numBatSerie,numTotalBat,CapBatsistema,CapUtilBat:Double;
{Painel-entrada}
CorrenteModulo,CorrenteCurtoModulo,TensaoModulo,TensaoAbertoModulo,
coeficienteTemperaturaV,Temperaturaalta,FatorCorrModulo,CompModulo,
LarguraModulo:Double;
FabricanteModulo,ModeloModulo,PesoModulo:string;
{cálculo painel}
CORRENTEprojetocorrigida,numMODULOSparalelo,TensaoTemperatura,
TensaoNecessaria,numMODULOSserie,numMODULOStotal,CorrenteArranjo,Corrente
CurtoArranjo,TensaoAbertoArranjo,TensaoArranjo,distanciamin,
quantidadeModulo,quantidadeFileira,quantidadeArranjo,quantidadeModulo2,
quantidadeFileira2,quantidadeArranjo2:Double;
sterreno,scargacc,scargaca,sdistanciamin,squantidadearranjo,squantidadearranjo2:string;
{Cargas}
siluminacaocc,siluminacaoca,smotorcc,smotorca,srefrigeracaocc,
srefrigeracaoca,scomputador,sliquidificador,sradio,sventilador,stelevisao,santena:string;
implementation
uses u_tela_inicial,u_ajuda_bateria_painel,u_dimensionamento_potencia,
u_dimensionamento_cargas,u_controlador,u_resultados_parciais,u_iluminacao,
u_geladeira,u_bomba_agua,u_pc_liquidificador,u_tv_antena,u_ventilador_radio,
u_resultados;
{$R *.lfm}
{ TFormBateriaPainel }
procedure TFormBateriaPainel.MenuItem2Click(Sender: TObject);
begin
FormAjudaBateriaPainel.Show;
end;
procedure TFormBateriaPainel.BitBtnResultadoClick(Sender: TObject);
begin
////////////////////////////////////////////////////////////////
{ dimensionamento a partir da potência}
if (xdpotencia=true) then
begin
{Entrada dados da Bateria}
dias:=StrToFloat(EditDias.Text);
SolPleno:=StrToFloat(EditSolPleno.Text);
ProfDesc:=StrToFloat(EditProfDesc.Text);
Vbateria:=StrToFloat(EditVbat.Text);
Capbateria:=StrToFloat(EditdCapBat.Text);//saida
Fatorfio:=StrToFloat(EditFatorefFio.Text);
FatorBat:=StrToFloat(EditFatorefBat.Text);
{Informações sobre a Bateria}
fabricantebateria:=EditFabricanteBateria.Text;//saida
modelobateria:=EditModeloBateria.Text;//saida
tipobateria:=EditTipoBateria.Text;//saida
{Cálculo com os dados Entrada}
72
CORRENTEpico:=potTOTALpot/Vsistemapot;
capacidadecorrigida:=(capacidadepot/Fatorfio)/FatorBat;
CORRENTEprojeto:=capacidadecorrigida/SolPleno;
CapNecessaria:=((capacidadecorrigida*dias)/ProfDesc);
numBatParalelo:=CapNecessaria/Capbateria;
if frac(numBatParalelo)>0 then
numBatParalelo:=int(numBatParalelo)+1;//saida
numBatSerie:= Vsistemapot/Vbateria;//saida
numTotalBat:=numBatSerie*numBatParalelo;//saida
CapBatsistema:=numBatParalelo*Capbateria;
CapUtilBat:=CapBatsistema*ProfDesc;//saida
{Entrada dados do Módulo}
CorrenteModulo:=StrToFloat(EditCorrenteModulo.Text);
CorrenteCurtoModulo:=StrToFloat(EditCorrenteCurtoModulo.Text);
TensaoModulo:=StrToFloat(EditTensaoModulo.Text);
TensaoAbertoModulo:=StrToFloat(EditTensaoAbertoModulo.Text);
coeficienteTemperaturaV:=StrToFloat(EditCoeficienteTemp.Text);
Temperaturaalta:=StrToFloat(EditTemperaturaModulo.Text);
if (RadioButtoncristanilo.Checked=true) then
FatorCorrModulo:=0.9;
if (RadioButtonamorfo.Checked=true) then
FatorCorrModulo:=0.7;
{Entrada Informações do Módulo}
FabricanteModulo:=EditFabricanteModulo.Text;//saida
ModeloModulo:=EditModeloModulo.Text;//saida
PesoModulo:=EditPesoModulo.Text;//saida
CompModulo:=StrToFloat(EditCompModulo.Text);//saida
LarguraModulo:=StrToFloat(EditLargModulo.Text);//saida
{Cálculo com os dados do Módulo}
CORRENTEprojetocorrigida:=CORRENTEprojeto/FatorCorrModulo;
numMODULOSparalelo:=CORRENTEprojetocorrigida/CorrenteModulo;
if frac(numMODULOSparalelo)>0 then
numMODULOSparalelo:= int(numMODULOSparalelo)+1;//saida
TensaoTemperatura:= TensãoModulo-(Temperaturaalta25)*coeficienteTemperaturaV;
TensaoNecessaria:=1.2*Vbateria*numBatSerie;
numMODULOSserie:=TensaoNecessaria/TensaoTemperatura;
if frac(numMODULOSserie)>0 then
numMODULOSserie:= int(numMODULOSserie)+1;//saida
numMODULOStotal:=numMODULOSparalelo*numMODULOSserie;//saida
CorrenteArranjo:=numMODULOSparalelo*correnteModulo;//saida
CorrenteCurtoArranjo:=numMODULOSparalelo*CorrenteCurtoModulo;//saida
TensaoArranjo:=numMODULOSserie*TensaoModulo;//saida
TensaoAbertoArranjo:=numMODULOSserie*TensaoAbertoModulo;//saida
{ cálculo distancia mínima entre módulos}
distanciamin:= 3.5*LarguraModulo*sin(pi*inclinacaopot/180);//saida
sdistanciamin:=FormatFloat('0.00',distanciamin);
{quantidade de módulos no terreno comp x larg e larg x comp}
{comp x larg}
quantidadeFileira:=dlargurapot/CompModulo;
quantidadeFileira:=int(quantidadeFileira);
73
quantidadeModulo:=dcomprimentopot/distanciamin;
quantidadeModulo:=int(quantidadeModulo)+1;
quantidadeArranjo:=quantidadeModulo*quantidadeFileira;
{larg x comp}
quantidadeFileira2:=dcomprimentopot/CompModulo;
quantidadeFileira2:=int(quantidadeFileira2);
quantidadeModulo2:=dlargurapot/distanciamin;
quantidadeModulo2:=int(quantidadeModulo2)+1;
quantidadeArranjo2:=quantidadeModulo2*quantidadeFileira2;
FormControlador.Show;
{Exibição dos Resultados do dimensionamento pela potência}
Formresultados.EditNumTotalBateriasaida.text:=FloatToStr(numTotalBat);
Formresultados.EditModeloModulosaida.text:=ModeloModulo;
Formresultados.EditPesoModulosaida.text:=PesoModulo;
Formresultados.EditCompModulosaida.text:=FloatToStr(CompModulo);
Formresultados.EditNumModuloTotalsaida.text:=FloatToStr(numMODULOStotal);
Formresultados.EditSerieModulosaida.text:=FloatToStr(numMODULOSserie);
Formresultados.EditParaleloModulosaida.text:=FloatToStr(numMODULOSparalelo);
Formresultados.EditVArranjosaida.text:=FloatToStr(TensaoArranjo);
Formresultados.EditAArranjosaida.text:=FloatToStr(CorrenteArranjo);
Formresultados.EditSerieBateriasaida.text:=FloatToStr(numBatSerie);
Formresultados.EditVAbertoArranjosaida.text:=FloatToStr(TensaoAbertoArranjo);
Formresultados.EditLarguraModulosaida.text:=FloatToStr(LarguraModulo);
Formresultados.EditACurtoArranjosaida.text:=FloatToStr(CorrenteCurtoArranjo);
Formresultados.EditDistanciaminsaida.text:=sdistanciamin;
Formresultados.EditParaleloBateriasaida.text:=FloatToStr(numBatParalelo);
Formresultados.EditCapacidadeUtilBateriasaida.text:=FloatToStr(CapUtilBat);
Formresultados.EditFabricanteBateriasaida.text:=fabricantebateria;
Formresultados.EditModeloBateriasaida.text:=modelobateria;
Formresultados.EditTipoBateriasaida.text:=tipobateria;
Formresultados.EditCapacidadeBateriasaida.text:=FloatToStr(Capbateria);
Formresultados.EditFabricanteModulosaida.text:= FabricanteModulo;
sterreno:=Format('O terreno tem %f m de comprimento e %f m de
largura',[dcomprimentopot,dlargurapot]);
Formresultados.Memo1.Lines.Add(sterreno);
Formresultados.Memo1.Lines.Add('');
if (numMODULOStotal > quantidadeArranjo) then
begin
Formresultados.Memo1.Lines.Add('fileiras paralelas a largura do terreno:');
squantidadearranjo:=Format('%f módulos por fileira e %f
fileiras',[quantidadeModulo,quantidadeFileira]);
Formresultados.Memo1.Lines.Add(squantidadearranjo);
Formresultados.Memo1.Lines.Add('Espaço insuficiente para a quantidade de módulos ');
Formresultados.Memo1.Lines.Add('');
end
else
begin
Formresultados.Memo1.Lines.Add('fileiras paralelas a largura do terreno:');
Formresultados.Memo1.Lines.Add('Espaço adequado para a quantidade de módulos ');
Formresultados.Memo1.Lines.Add('');
74
end;
if (numMODULOStotal > quantidadeArranjo2) then
begin
Formresultados.Memo1.Lines.Add('fileiras paralelas ao comprimento do terreno ');
squantidadearranjo2:=Format('%f módulos por fileira e %f
fileiras',[quantidadeModulo2,quantidadeFileira2]);
Formresultados.Memo1.Lines.Add(squantidadearranjo2);
Formresultados.Memo1.Lines.Add('Espaço insuficiente para a quantidade de módulos ');
end
else
begin
Formresultados.Memo1.Lines.Add('fileiras paralelas ao comprimento do terreno ');
Formresultados.Memo1.Lines.Add('Espaço adequado para a quantidade de módulos ');
end;
Formresultados.Memo1.Lines.Add('------------------------------------------------');
scargacc:=Format(' %f W de potência CC',[potCCpot]);
Formresultados.Memo1.Lines.Add(scargacc);
Formresultados.Memo1.Lines.Add('');
Formresultados.Memo1.Lines.Add('------------------------------------------------');
scargaca:=Format(' %f W de potência CA',[potCApot]);
Formresultados.Memo1.Lines.Add(scargaca);
end;
//////////////////////////////////////////////////////////////
{Dimensionamento a partir das cargas}
if (xdcargas=true) then
begin
{Entrada dados da Bateria}
dias:=StrToFloat(EditDias.Text);
SolPleno:=StrToFloat(EditSolPleno.Text);
ProfDesc:= Capbateria:=StrToFloat(EditdCapBat.Text);//saida
Fatorfio:=StrToFloat(EditFatorefFio.Text);
FatorBat:=StrToFloat(EditFatorefBat.Text);
{Informações sobre a Bateria}
fabricantebateria:=EditFabricanteBateria.Text;//saida
modelobateria:=EditModeloBateria.Text;//saida
tipobateria:=EditTipoBateria.Text;//saida
{Cálculo com os dados Entrada}
StrToFloat(EditProfDesc.Text);
Vbateria:=StrToFloat(EditVbat.Text);
CORRENTEpico:=potTOTALcargas/VsistemaCargas;
capacidadecorrigida:=(capacidadeCargas/Fatorfio)/FatorBat;
CORRENTEprojeto:=capacidadecorrigida/SolPleno;
CapNecessaria:=((capacidadecorrigida*dias)/ProfDesc);
numBatParalelo:=CapNecessaria/Capbateria;
if frac(numBatParalelo)>0 then
numBatParalelo:=int(numBatParalelo)+1;//saida
numBatSerie:= VsistemaCargas/Vbateria;//saida
numTotalBat:=numBatSerie*numBatParalelo;//saida
75
CapBatsistema:=numBatParalelo*Capbateria;
CapUtilBat:=CapBatsistema*ProfDesc;//saida
{Entrada dados do Módulo}
CorrenteModulo:=StrToFloat(EditCorrenteModulo.Text);
CorrenteCurtoModulo:=StrToFloat(EditCorrenteCurtoModulo.Text);
TensaoModulo:=StrToFloat(EditTensaoModulo.Text);
TensaoAbertoModulo:=StrToFloat(EditTensaoAbertoModulo.Text);
coeficienteTemperaturaV:=StrToFloat(EditCoeficienteTemp.Text);
Temperaturaalta:=StrToFloat(EditTemperaturaModulo.Text);
if (RadioButtoncristanilo.Checked=true) then
FatorCorrModulo:=0.9;
if (RadioButtonamorfo.Checked=true) then
FatorCorrModulo:=0.7;
{Entrada Informações do Módulo}
FabricanteModulo:=EditFabricanteModulo.Text;//saida
ModeloModulo:=EditModeloModulo.Text;//saida
PesoModulo:=EditPesoModulo.Text;//saida
CompModulo:=StrToFloat(EditCompModulo.Text);//saida
LarguraModulo:=StrToFloat(EditLargModulo.Text);//saida
{Cálculo com os dados do Módulo}
CORRENTEprojetocorrigida:=CORRENTEprojeto/FatorCorrModulo;
numMODULOSparalelo:=CORRENTEprojetocorrigida/CorrenteModulo;
if frac(numMODULOSparalelo)>0 then
numMODULOSparalelo:= int(numMODULOSparalelo)+1;//saida
TensaoTemperatura:= TensãoModulo-(Temperaturaalta25)*coeficienteTemperaturaV;
TensaoNecessaria:=1.2*Vbateria*numBatSerie;
numMODULOSserie:=TensaoNecessaria/TensaoTemperatura;
if frac(numMODULOSserie)>0 then
numMODULOSserie:= int(numMODULOSserie)+1;//saida
numMODULOStotal:=numMODULOSparalelo*numMODULOSserie;//saida
CorrenteArranjo:=numMODULOSparalelo*correnteModulo;//saida
CorrenteCurtoArranjo:=numMODULOSparalelo*CorrenteCurtoModulo;//saida
TensaoArranjo:=numMODULOSserie*TensaoModulo;//saida
TensaoAbertoArranjo:=numMODULOSserie*TensaoAbertoModulo;//saida
{ cálculo distancia mínima entre módulos}
distanciamin:= 3.5*LarguraModulo*sin(pi*inclinacaoCargas/180);//saida
sdistanciamin:=FormatFloat('0.00',distanciamin);
{quantidade de módulos no terreno comp x larg e larg x comp}
{comp x larg}
quantidadeFileira:=dlarguraCargas/CompModulo;
quantidadeFileira:=int(quantidadeFileira);
quantidadeModulo:=dcomprimentoCargas/distanciamin;
quantidadeModulo:=int(quantidadeModulo)+1;
quantidadeArranjo:=quantidadeModulo*quantidadeFileira;
{larg x comp}
quantidadeFileira2:=dcomprimentoCargas/CompModulo;
quantidadeFileira2:=int(quantidadeFileira2);
quantidadeModulo2:=dlarguraCargas/distanciamin;
quantidadeModulo2:=int(quantidadeModulo2)+1;
quantidadeArranjo2:=quantidadeModulo2*quantidadeFileira2;
76
FormControlador.Show;
{Exibição dos Resultados do dimensionamento pelas cargas}
Formresultados.EditNumTotalBateriasaida.text:=FloatToStr(numTotalBat);
Formresultados.EditModeloModulosaida.text:=ModeloModulo;
Formresultados.EditPesoModulosaida.text:=PesoModulo;
Formresultados.EditCompModulosaida.text:=FloatToStr(CompModulo);
Formresultados.EditNumModuloTotalsaida.text:=FloatToStr(numMODULOStotal);
Formresultados.EditSerieModulosaida.text:=FloatToStr(numMODULOSserie);
Formresultados.EditParaleloModulosaida.text:=FloatToStr(numMODULOSparalelo);
Formresultados.EditVArranjosaida.text:=FloatToStr(TensaoArranjo);
Formresultados.EditAArranjosaida.text:=FloatToStr(CorrenteArranjo);
Formresultados.EditSerieBateriasaida.text:=FloatToStr(numBatSerie);
Formresultados.EditVAbertoArranjosaida.text:=FloatToStr(TensaoAbertoArranjo);
Formresultados.EditLarguraModulosaida.text:=FloatToStr(LarguraModulo);
Formresultados.EditACurtoArranjosaida.text:=FloatToStr(CorrenteCurtoArranjo);
Formresultados.EditDistanciaminsaida.text:=sdistanciamin;
Formresultados.EditParaleloBateriasaida.text:=FloatToStr(numBatParalelo);
Formresultados.EditCapacidadeUtilBateriasaida.text:=FloatToStr(CapUtilBat);
Formresultados.EditFabricanteBateriasaida.text:=fabricantebateria;
Formresultados.EditModeloBateriasaida.text:=modelobateria;
Formresultados.EditTipoBateriasaida.text:=tipobateria;
Formresultados.EditCapacidadeBateriasaida.text:=FloatToStr(Capbateria);
Formresultados.EditFabricanteModulosaida.text:= FabricanteModulo;
sterreno:=Format('O terreno tem %f m de comprimento e %f m de
largura',[dcomprimentoCargas,dlarguraCargas]);
Formresultados.Memo1.Lines.Add(sterreno);
Formresultados.Memo1.Lines.Add('');
if (numMODULOStotal > quantidadeArranjo) then
begin
Formresultados.Memo1.Lines.Add('fileiras paralelas a largura do terreno:');
squantidadearranjo:=Format('%f módulos por fileira e %f
fileiras',[quantidadeModulo,quantidadeFileira]);
Formresultados.Memo1.Lines.Add(squantidadearranjo);
Formresultados.Memo1.Lines.Add('Espaço insuficiente para a quantidade de módulos ');
Formresultados.Memo1.Lines.Add('');
end
else
begin
Formresultados.Memo1.Lines.Add('fileiras paralelas a largura do terreno:');
Formresultados.Memo1.Lines.Add('Espaço adequado para a quantidade de módulos ');
Formresultados.Memo1.Lines.Add('');
end;
if (numMODULOStotal > quantidadeArranjo2) then
begin
Formresultados.Memo1.Lines.Add('fileiras paralelas ao comprimento do terreno ');
squantidadearranjo2:=Format('%f módulos por fileira e %f
fileiras',[quantidadeModulo2,quantidadeFileira2]);
Formresultados.Memo1.Lines.Add(squantidadearranjo2);
Formresultados.Memo1.Lines.Add('Espaço insuficiente para a quantidade de módulos ');
end
77
else
begin
Formresultados.Memo1.Lines.Add('fileiras paralelas ao comprimento do terreno ');
Formresultados.Memo1.Lines.Add('Espaço adequado para a quantidade de módulos ');
end;
Formresultados.Memo1.Lines.Add('------------------------------------------------');
Formresultados.Memo1.Lines.Add('CARGAS CC');
Formresultados.Memo1.Lines.Add('');
if (xiluminacaocc=false) then //iluminacao
begin
siluminacaocc:=Format('%f lampadas de %f V e %f W de potência',[Qcci,Vcci,Wcci]);
Formresultados.Memo1.Lines.Add(siluminacaocc);
Formresultados.Memo1.Lines.Add('');
end;
if (xrefrigeracaocc=false) then //refrigeracao
begin
srefrigeracaocc:=Format('%f geladeiras de %f V e %f W de
potência',[Qccr,Vccr,Wccr]);
Formresultados.Memo1.Lines.Add(srefrigeracaocc);
Formresultados.Memo1.Lines.Add('');
end;
if (xmotorcc=false) then // bomba
begin
smotorcc:=Format('%f bombas d água de %f V e %f W de
potência',[Qccm,Vccm,Wccm]);
Formresultados.Memo1.Lines.Add(smotorcc);
Formresultados.Memo1.Lines.Add('');
end;
Formresultados.Memo1.Lines.Add('------------------------------------------------');
Formresultados.Memo1.Lines.Add('CARGAS CA');
Formresultados.Memo1.Lines.Add('');
if (xiluminacaoca=false) then //iluminacao
begin
siluminacaoca:=Format('%f lampadas de %f V e %f W de potência',[Qcai,Vcai,Wcai]);
Formresultados.Memo1.Lines.Add(siluminacaoca);
Formresultados.Memo1.Lines.Add('');
end;
if (xrefrigeracaoca=false) then //refrigeracao
begin
srefrigeracaoca:=Format('%f geladeiras de %f V e %f W de
potência',[Qcar,Vcar,Wcar]);
Formresultados.Memo1.Lines.Add(srefrigeracaoca);
Formresultados.Memo1.Lines.Add('');
end;
if (xmotorca=false) then // motor
begin
smotorca:=Format('%f bombas d água de %f V e %f W de
potência',[Qcam,Vcam,Wcam]);
Formresultados.Memo1.Lines.Add(smotorca);
Formresultados.Memo1.Lines.Add('');
78
end;
if (xliquidificador=false) then //liquidificador
begin
sliquidificador:=Format('%f liquidificadores de %f V e %f W de
potência',[Qcal,Vcal,Wcal]);
Formresultados.Memo1.Lines.Add(sliquidificador);
Formresultados.Memo1.Lines.Add('');
end;
if (xcomputador=false) then //computador
begin
scomputador:=Format('%f computadores de %f V e %f W de
potência',[Qcapc,Vcapc,Wcapc]);
Formresultados.Memo1.Lines.Add(scomputador);
Formresultados.Memo1.Lines.Add('');
end;
if (xtelevisao=false) then //televisao
begin
stelevisao:=Format('%f TVs de %f V e %f W de potência',[Qcatv,Vcatv,Wcatv]);
Formresultados.Memo1.Lines.Add(stelevisao);
Formresultados.Memo1.Lines.Add('');
end;
if (xantena=false) then //antena
begin
santena:=Format('%f antenas parabólicas de %f V e %f W de
potência',[Qcaap,Vcaap,Wcaap]);
Formresultados.Memo1.Lines.Add(santena);
Formresultados.Memo1.Lines.Add('');
end;
if (xradio=false) then //radio
begin
sradio:=Format('%f rádios de %f V e %f W de
potência',[Qcaradio,Vcaradio,Wcaradio]);
Formresultados.Memo1.Lines.Add(sradio);
Formresultados.Memo1.Lines.Add('');
end;
if (xventilador=false) then //ventilador
begin
sventilador:=Format('%f ventiladores de %f V e %f W de
potência',[Qcav,Vcav,Wcav]);
Formresultados.Memo1.Lines.Add(sventilador);
Formresultados.Memo1.Lines.Add('');
end;
Formresultados.Memo1.Lines.Add('------------------------------------------------');
scargacc:=Format(' %f W de potência CC',[potCCcargas]);
Formresultados.Memo1.Lines.Add(scargacc);
Formresultados.Memo1.Lines.Add('');
Formresultados.Memo1.Lines.Add('------------------------------------------------');
scargaca:=Format(' %f W de potência CA',[potCAcargas]);
Formresultados.Memo1.Lines.Add(scargaca);
end;
79
end;
end.
unit u_ajuda_bateria_painel;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TFormAjudaBateriaPainel }
TFormAjudaBateriaPainel = class(TForm)
Label2: TLabel;
private
{ private declarations }
public
{ public declarations }
end;
var
FormAjudaBateriaPainel: TFormAjudaBateriaPainel;
implementation
{$R *.lfm}
end.
unit u_controlador;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons;
type
{ TFormControlador }
TFormControlador = class(TForm)
BitBtnResultado: TBitBtn;
EditCorrenteControlador: TEdit;
EditFabricanteControlador: TEdit;
EditModeloControlador: TEdit;
Label10: TLabel;
Label14: TLabel;
Label5: TLabel;
Label9: TLabel;
80
procedure BitBtnResultadoClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FormControlador: TFormControlador;
CorrenteControlador,CorrenteMinControlador,ControladoresParalelos:Double;
FabricanteControlador,ModeloControlador:string;
implementation
uses u_bateria_painel,u_resultados;
{$R *.lfm}
{ TFormControlador }
procedure TFormControlador.BitBtnResultadoClick(Sender: TObject);
begin
{Entrada dados Controlador}
CorrenteControlador:=StrToFloat(EditCorrenteControlador.Text);
FabricanteControlador:=EditFabricanteControlador.Text;
ModeloControlador:=EditModeloControlador.Text;
{Cálculo com os dados do Controlador}
CorrenteMinControlador:=1.25*CorrenteCurtoArranjo;
ControladoresParalelos:=CorrenteMinControlador/CorrenteControlador;
if frac(Controladoresparalelos)>0 then
ControladoresParalelos:=int(ControladoresParalelos)+1;
{Exibir resultados}
Formresultados.EditFabricanteControladorsaida.text:=FabricanteControlador;
Formresultados.EditModeloControladorsaida.text:=ModeloControlador;
Formresultados.EditNumControladoresParsaida.text:=FloatToStr(Controlador esParalelos
);
Formresultados.Show;
FormBateriaPainel.Hide;
FormControlador.Hide;
end;
end.
unit u_resultados_parciais;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TFormResultadoParcial }
TFormResultadoParcial = class(TForm)
81
Button1: TButton;
Buttonexibir: TButton;
Editcapacidade: TEdit;
EditpotCA: TEdit;
EditpotCC: TEdit;
EditpotTOTAL: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure ButtonexibirClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FormResultadoParcial: TFormResultadoParcial;
potCCcargas,potCAcargas,potTOTALcargas,capacidadeCargas,consumoCCcargas,
consumoCAcargas: double;
implementation
uses u_dimensionamento_cargas,u_iluminacao,u_geladeira,u_bomba_agua,
u_pc_liquidificador,u_tv_antena,u_ventilador_radio,u_bateria_painel;
{$R *.lfm}
{ TFormResultadoParcial }
procedure TFormResultadoParcial.ButtonexibirClick(Sender: TObject);
begin
potCCcargas:= POTCCilum + POTCCrefr + POTCCmotor;
potCAcargas:= POTCAilum + POTCArefr + POTCAmotor + POTCAl + POTCApc +
POTCAtv + POTCAap + POTCAv + POTCAradio;
potTOTALcargas:= potCCcargas + potCAcargas;
consumoCCcargas:= consumocci + consumoccr + consumoccm;
consumoCAcargas:= consumocai + consumocar + consumocam + consumocal +
consumocapc + consumocatv + consumocaap + consumocav + consumocaradio;
capacidadeCargas:= consumoCCcargas + consumoCAcargas;
capacidadeCargas:= round(capacidadeCargas);
EditpotCC.Text:=FloatToStr(potCCcargas);
EditpotCA.Text:=FloatToStr(potCAcargas);
EditpotTOTAL.Text:=FloatToStr(potTOTALcargas);
Editcapacidade.Text:=FloatToStr(capacidadeCargas);
end;
procedure TFormResultadoParcial.Button1Click(Sender: TObject);
begin
FormBateriaPainel.Show;
FormResultadoParcial.Hide;
end;
end.
82
*Código da Tela Resultados
unit u_resultados;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls;
type
{ TFormresultados }
TFormresultados = class(TForm)
EditAArranjosaida: TEdit;
EditACurtoArranjosaida: TEdit;
EditCapacidadeBateriasaida: TEdit;
EditCapacidadeUtilBateriasaida: TEdit;
EditCompModulosaida: TEdit;
EditDistanciaminsaida: TEdit;
EditFabricanteBateriasaida: TEdit;
EditFabricanteControladorsaida: TEdit;
EditFabricanteModulosaida: TEdit;
EditLarguraModulosaida: TEdit;
EditModeloBateriasaida: TEdit;
EditModeloControladorsaida: TEdit;
EditModeloModulosaida: TEdit;
EditNumControladoresParsaida: TEdit;
EditNumModuloTotalsaida: TEdit;
EditNumTotalBateriasaida: TEdit;
EditParaleloBateriasaida: TEdit;
EditParaleloModulosaida: TEdit;
EditPesoModulosaida: TEdit;
EditSerieBateriasaida: TEdit;
EditSerieModulosaida: TEdit;
EditTipoBateriasaida: TEdit;
EditVAbertoArranjosaida: TEdit;
EditVArranjosaida: TEdit;
Label1: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label2: TLabel;
Label20: TLabel;
Label21: TLabel;
83
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Memo1: TMemo;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
private
{ private declarations }
public
{ public declarations }
end;
var
Formresultados: TFormresultados;
implementation
{$R *.lfm}
end.
84
ANEXO II – FOLHA DE DADOS DO MÓDULO FOTOVOLTAICO KYOCERA
KD205GX-LP
85
ANEXO III – FOLHA DE DADOS DA BATERIA UNIPOWER UP121500
86
ANEXO IV – FOLHA DE DADOS DO CONTROLADOR DE CARGA
MORNINGSTAR TRISTAR-45
87