Um compêndio baseado na documentação do projeto "CHI".
Esta apostila consolida a documentação técnica do "Simulador de Efluentes", um sistema completo para simulação e dimensionamento de Estações de Tratamento de Efluentes (ETE) utilizando o processo de Lodos Ativados.
O conteúdo abrange desde os princípios fundamentais da engenharia química e sanitária, como balanço de massa e cinética biológica, até a implementação prática em código, incluindo o dimensionamento de reatores, decantadores, sistemas de lodo, e a verificação de conformidade com as normas ambientais.
O objetivo é servir como um guia de estudo e referência, refletindo a filosofia de "Física antes da Lógica", onde a compreensão dos fenômenos precede a escrita do código. Cada seção representa um módulo da documentação original do projeto, organizada de forma lógica para facilitar o aprendizado.
Esta seção revisa os conceitos fundamentais que formam a base do tratamento de efluentes por lodos ativados.
O sistema realiza balanços de massa estequiométricos baseados no princípio de conservação de massa de Lavoisier. Isso significa que: Massa que entra = Massa que sai + Massa acumulada + Massa consumida.
# Exemplo de cálculo de carga
Carga = Concentração × Vazão × Fator de conversão
Demanda O₂ (DBO): 1 kg DBO requer 1.42 kg O₂
Demanda O₂ (Nitrificação): 1 kg N requer 4.57 kg O₂
Massa que entra = Massa que sai + Massa acumulada + Massa consumida
# Exemplo de cálculo de carga
Carga = Concentração × Vazão × Fator de conversão
Demanda O₂ (DBO): 1 kg DBO requer 1.42 kg O₂
Demanda O₂ (Nitrificação): 1 kg N requer 4.57 kg O₂
O banco de dados armazena: Efluentes, Aeradores, Normas Ambientais (CONAMA 430), e Limites Físicos para validação.
O sistema bloqueia cálculos com dados fisicamente impossíveis, como DBO > DQO, pH fora da faixa biológica, ou vazão nula. Isso previne o erro "Garbage In, Garbage Out" (GIGO).
DBO (Demanda Bioquímica de Oxigênio): Mede a porção da matéria orgânica que é biodegradável.
DQO (Demanda Química de Oxigênio): Mede TODA a matéria orgânica oxidável, incluindo a não biodegradável. Por isso, DQO ≥ DBO sempre.
É a relação entre o alimento (Carga de DBO) e a massa de microrganismos. Controla a eficiência e o tamanho do reator.
F/M = (Q × S₀) / (V × X)
É o tempo médio que uma bactéria permanece no sistema. Controla quais tipos de bactérias prosperam.
θc = Massa de lodo no sistema / Massa de lodo descartada por dia
O que falta implementar nesta etapa: Cálculo do volume do reator baseado em F/M, cálculo de θc, e dimensionamento do sistema de decantação e recirculação.
Esta seção explora o conceito de "Inventividade no Processo", focando em como a recirculação de lodo otimiza o tratamento.
Recircular o lodo do decantador de volta para o reator é uma "inventividade" pois permite manter uma alta concentração de microrganismos (X) no reator, o que traz duas grandes vantagens:
A fórmula chave é a do F/M: F/M = (Q × S0) / (V × X). Ao recircular, X aumenta de ~500 mg/L para ~3000 mg/L (um aumento de 6x). Para manter o mesmo F/M, o volume V pode ser 6x menor.
Através de um balanço de massa, chega-se à fórmula da razão de recirculação (R):
R = X / (Xr - X)
Onde X é a concentração no reator e Xr é a concentração no lodo recirculado (do fundo do decantador), que é sempre maior que X.
Aumentar a razão de recirculação (R) aumenta a concentração de lodo (X) no reator. Isso permite ou diminuir o volume (V) do reator ou aumentar a carga (Q x S0) a ser tratada.
Esta seção detalha os cálculos envolvidos no sistema de lodo, incluindo recirculação, produção, descarte e a idade do lodo (θc).
É o processo de bombear lodo do decantador de volta para o reator para manter a concentração de microrganismos (X) e controlar a Idade do Lodo (θc).
A Razão de Recirculação (R) é calculada por: R = X / (Xr - X).
As bactérias crescem ao consumir DBO, mas também morrem (respiração endógena). A produção líquida de lodo (Px) deve ser descartada para manter o equilíbrio.
Px = Y × (S₀ - S) × Q - kd × X × V
O descarte (Qw) é necessário para controlar a idade do lodo. A vazão de descarte é calculada para remover a produção líquida de lodo (Px).
Qw = Px / Xr
É o tempo médio que uma bactéria fica no sistema. É o parâmetro de controle mais importante.
θc = (V × X) / (Qw × Xr)
A idade do lodo determina quais bactérias dominam o sistema:
Para que a nitrificação ocorra, θc deve ser, no mínimo, 10-12 dias, pois as bactérias nitrificantes crescem muito lentamente.
Esta seção aborda o dimensionamento do decantador secundário, uma etapa crucial para garantir a clarificação do efluente final.
É a velocidade com que os flocos de lodo "caem" no decantador. Fatores que afetam Vs:
A área do decantador (A) deve ser grande o suficiente para que o tempo de sedimentação seja menor que o tempo de detenção.
A ≥ Q / Vs
Onde Q é a vazão total (efluente + recirculação) e Vs é a velocidade de sedimentação. Um fator de segurança é aplicado.
É a vazão aplicada por unidade de área. É um parâmetro de projeto importante para evitar sobrecarga hidráulica.
TAS = Q / A (em m³/m²·dia)
Mede a "qualidade" e a capacidade de compactação do lodo. É a principal ferramenta para diagnosticar problemas de sedimentação.
IVL = (Volume de lodo sedimentado em 30 min) / (Massa de lodo)
Ocorre quando bactérias filamentosas crescem excessivamente, criando uma estrutura que impede a compactação do lodo. Causa turbidez no efluente final e perda de sólidos.
A imagem acima ilustra claramente a diferença entre um decantador operando normalmente e um em situação de bulking. No decantador normal, observa-se sedimentação adequada, interface lodo/água bem definida, lodo compactado no fundo e efluente clarificado. No decantador com bulking, o lodo não sedimenta adequadamente, a interface é difusa, o lodo ocupa grande volume e o efluente sai turvo, indicando risco de arraste de sólidos.
Visão geral do Simulador de Efluentes, um sistema completo para simulação e dimensionamento de ETEs de Lodos Ativados.
O sistema oferece uma interface visual completa desenvolvida com Streamlit, permitindo entrada interativa de dados e visualização imediata dos resultados de dimensionamento.
# Instalar dependências
pip install -r requirements.txt
# Executar interface
streamlit run interface.py
# Abrir no navegador o endereço que o Streamlit imprimir no terminal
# (servidor local; porta habitual 8501 se não estiver ocupada)
O projeto é modular, separando responsabilidades:
database.py # Banco de dados
calculos.py # Cálculos centrais
dimensionamento.py # Dimensionamento de reator/decantador
recirculacao.py # Lógica de lodo
conformidade.py # Regras da CONAMA
validacao.py # Validação de dados de entrada
interface.py # UI com Streamlit
Detalhes do módulo que verifica a conformidade legal do efluente tratado, com base na norma CONAMA 430/2011.
Um efluente é considerado CONFORME se atender a pelo menos um dos seguintes critérios:
Quando o efluente é considerado INCONFORME, o sistema calcula o "Déficit de Engenharia". Este valor representa a carga poluidora (em kg/dia) que está sendo lançada no corpo receptor acima do permitido por lei, caracterizando um problema ambiental e de engenharia a ser corrigido.
O módulo pode ser usado tanto via uma interface de terminal interativa (`menu_conformidade.py`) quanto programaticamente, integrando-se aos outros módulos de cálculo para uma verificação automática ao final de cada simulação.
Este módulo atua como um "guardião" do sistema, garantindo que nenhum cálculo seja realizado com dados fisicamente impossíveis ou inconsistentes.
Evitar o princípio de "Garbage In, Garbage Out" (GIGO), bloqueando a execução de cálculos se os dados de entrada violarem leis fundamentais da física e da química.
vazao_m3_dia ≤ 0. Fluxo de massa requer vazão positiva.pH < 2.0 ou pH > 12.0. Fora da faixa de sobrevivência da biomassa.DBO > DQO. A parte (DBO) não pode ser maior que o todo (DQO).O sistema também emite alertas para dados que, embora possíveis, são suspeitos e podem indicar erros de digitação.
Registro do desenvolvimento do módulo de dimensionamento do reator.
Esta etapa do projeto focou em criar a classe DimensionadorReator e integrá-la aos cálculos existentes.
F/M = (Q × S₀) / (V × X)V = (Q × S₀) / (F/M × X)TDH = V / QCv = (Q × S₀) / V
Este capítulo apresenta a Matriz de Petersen, um modelo dinâmico baseado em balanço de elétrons que permite cálculo exato da demanda de oxigênio. A Matriz de Petersen representa um avanço científico fundamental, elevando o simulador de aproximações empíricas para cálculos exatos baseados em princípios fundamentais da engenharia química.
As fórmulas estáticas tradicionais, como O₂ = 1.42 × DBO, são aproximações empíricas baseadas em correlações estatísticas. Embora úteis para estimativas rápidas, apresentam limitações fundamentais:
O₂ = 1.42 × DBO é uma aproximação empírica que não considera limitação de O₂, concentração de biomassa, decaimento, evolução temporal ou balanço de elétrons. É adequada para estimativas preliminares, mas inadequada para dimensionamento preciso ou análise científica rigorosa.
A Matriz de Petersen é uma estrutura matemática sistemática que organiza processos biológicos em uma matriz estequiométrica, baseada no modelo ASM1 (Activated Sludge Model 1), padrão internacional para modelagem de lodos ativados.
Estrutura da Matriz:
Matriz[Processo, Componente] = Coeficiente Estequiométrico
Processo 1: Crescimento Aeróbio
- Consome substrato: -(1/Y)
- Produz biomassa: +1
- Consome oxigênio: -(1-Y)/Y
Processo 2: Decaimento (Morte)
- Consome biomassa: -1
- Consome oxigênio: -f_d × b (respiração endógena)
O cálculo da demanda de oxigênio pela Matriz de Petersen é exato porque respeita o princípio fundamental de conservação de elétrons, base da estequiometria química.
Em qualquer reação química, os elétrons não podem ser criados nem destruídos. Na oxidação biológica:
Elétrons no Substrato = Elétrons na Biomassa + Elétrons no O₂ consumido
O coeficiente de rendimento Y define exatamente qual fração do substrato é convertida em biomassa:
Para cada kg de biomassa produzida:
Substrato consumido = 1/Y kg
Elétrons no substrato = Elétrons na biomassa + Elétrons no O₂
Como Y% vira biomassa e (1-Y)% precisa ser oxidado:
O₂ necessário = (1-Y)/Y × Substrato consumido
O₂ necessário = (1-Y)/Y × (1/Y) = (1-Y)/Y kg O₂ por kg biomassa
Para Y = 0.6: O₂ = (1-0.6)/0.6 = 0.67 kg O₂ / kg biomassa
A Matriz de Petersen utiliza o modelo cinético de Monod para calcular as taxas de cada processo, considerando as limitações reais do sistema biológico.
A taxa de crescimento microbiano segue o modelo de Monod, que considera limitação simultânea por substrato e oxigênio:
r_crescimento = μ_max × (S_s / (K_s + S_s)) × (S_o / (K_oh + S_o)) × X_b
Parâmetros:
Interpretação:
S_s >> K_s e S_o >> K_oh: Taxa máxima (nenhuma limitação).S_s << K_s: Taxa limitada por substrato (crescimento lento).S_o << K_oh: Taxa limitada por oxigênio (crescimento anaeróbio ou limitado).A taxa de decaimento é proporcional à biomassa presente, representando a morte natural e a respiração endógena:
r_decaimento = b × X_b
Parâmetros:
Interpretação: Se b = 0.15 1/dia, significa que 15% da biomassa morre naturalmente a cada dia, independentemente da disponibilidade de substrato.
A Matriz de Petersen permite simular a evolução temporal do sistema resolvendo um sistema de equações diferenciais ordinárias (EDOs) acopladas, representando os balanços de massa dinâmicos para cada componente.
Para cada componente, o balanço de massa é:
d[Componente]/dt = Entrada - Saída + Produção - Consumo
Para S_s (Substrato):
dS_s/dt = d × (S_s_entrada - S_s) - (1/Y) × r_crescimento
d × (S_s_entrada - S_s) onde d = Q/V é a taxa de diluição (1/dia).-(1/Y) × r_crescimento representa o substrato consumido no crescimento.Para X_b (Biomassa):
dX_b/dt = d × (X_b_entrada - X_b) + r_crescimento - r_decaimento
d × (X_b_entrada - X_b) considera recirculação de lodo.+r_crescimento representa nova biomassa produzida.-r_decaimento representa biomassa que morre.Para S_o (Oxigênio):
dS_o/dt = d × (S_o_entrada - S_o) + O2_transferido - O2_consumido
d × (S_o_entrada - S_o) considera O₂ no efluente (geralmente baixo).+O2_transferido representa O₂ fornecido pelos aeradores.-O2_consumido representa O₂ consumido no crescimento e decaimento.O sistema de EDOs é resolvido numericamente usando métodos de integração (ex: scipy.integrate.odeint), permitindo:
d/dt = 0.
| Aspecto | Fórmula Estática | Matriz de Petersen |
|---|---|---|
| Base | Aproximação empírica (1.42 × DBO) | Balanço de elétrons (exato) |
| Limitação de O₂ | ❌ Não considera | ✅ Considera (Monod) |
| Decaimento | ❌ Não considera | ✅ Considera respiração endógena |
| Biomassa | ❌ Não considera | ✅ Considera concentração |
| Temporal | ❌ Estático | ✅ Dinâmico (varia no tempo) |
| Precisão | Aproximação | Exato |
A matriz estequiométrica implementada no sistema segue exatamente os princípios descritos acima:
S_s X_b S_o
Crescimento -1/Y +1 -(1-Y)/Y
Decaimento 0 -1 -f_d×b
Coeficientes Numéricos (para Y=0.6, f_d=0.08, b=0.15):
-(1/Y) = -1.6667 kg substrato por kg biomassa+1.0000 kg biomassa produzida-(1-Y)/Y = -0.6667 kg O₂ por kg biomassa-1.0000 kg biomassa consumida-f_d×b = -0.0120 kg O₂ por kg biomassa (respiração endógena)Matriz^T × Taxas garante automaticamente que todos os balanços de massa sejam respeitados, validando matematicamente a conservação de massa e elétrons.
O diagrama acima ilustra visualmente o princípio fundamental que torna o cálculo da Matriz de Petersen exato. Os elétrons do substrato são distribuídos entre biomassa e oxigênio, garantindo conservação matemática.
Resumo: A Matriz de Petersen representa um avanço científico no simulador, permitindo cálculos exatos baseados em princípios fundamentais da engenharia química, não em aproximações empíricas. O sistema agora é cientificamente soberano.
Este capítulo detalha a implementação prática da Matriz de Petersen no código, sua integração com o sistema existente, e como utilizar a simulação temporal para análise avançada do comportamento do reator biológico.
A Matriz de Petersen foi implementada no módulo cinetica.py através da classe MatrizPetersen, que encapsula toda a lógica de cálculo dinâmico.
A classe MatrizPetersen possui os seguintes componentes principais:
Foi criada a tabela parametros_cineticos no SQLite para armazenar:
| Parâmetro | Valor Padrão | Unidade | Descrição |
|---|---|---|---|
| μ_max | 4.0 | 1/dia | Taxa máxima de crescimento |
| K_s | 20.0 | mg/L | Constante de meia-saturação substrato |
| K_oh | 0.5 | mg/L | Constante de meia-saturação oxigênio |
| Y | 0.6 | kg SSV/kg DBO | Coeficiente de rendimento |
| b | 0.15 | 1/dia | Taxa de decaimento |
| f_d | 0.08 | - | Fração de biomassa que vira inerte |
1. Cálculo de Taxas:
taxa_crescimento = calcular_taxa_crescimento(s_s, s_o, x_b)
taxa_decaimento = calcular_taxa_decaimento(x_b)
2. Balanço de Massa:
balancos = calcular_balanco_massa(s_s, s_o, x_b)
# Retorna: consumo_substrato, producao_biomassa, consumo_oxigenio
3. Demanda de Oxigênio:
demanda = calcular_demanda_oxigenio(s_s, s_o, x_b, volume_m3)
# Retorna: demanda_crescimento, demanda_decaimento, demanda_total
4. Simulação Temporal:
evolucao = simular_evolucao_temporal(
s_s_inicial, s_o_inicial, x_b_inicial,
vazao_m3_dia, volume_m3, tempo_simulacao_dias
)
# Retorna: tempo, s_s, x_b, s_o, taxas, consumo_o2
A integração da Matriz de Petersen ao sistema principal foi realizada de forma que o usuário possa escolher entre método estático (rápido) ou dinâmico (preciso), mantendo compatibilidade total com o código existente.
O método calcular_demanda_oxigenio_total() foi estendido para aceitar parâmetros opcionais:
def calcular_demanda_oxigenio_total(
vazao_m3_dia: float,
dbo_mg_l: float,
tkn_mg_l: float,
usar_matriz_petersen: bool = False,
s_o: Optional[float] = None,
x_b: Optional[float] = None,
volume_m3: Optional[float] = None
) -> Dict[str, float]
Comportamento:
usar_matriz_petersen=False: Usa método estático (comportamento original).usar_matriz_petersen=True: Valida parâmetros (s_o, x_b, volume_m3) e usa Matriz de Petersen.O método simular_tratamento_completo() também aceita usar_matriz_petersen:
Na interface visual, o usuário pode ativar a Matriz de Petersen através de um checkbox no sidebar:
A imagem acima ilustra a arquitetura de integração, mostrando como a Matriz de Petersen se conecta com os diferentes módulos do sistema, mantendo compatibilidade total enquanto oferece capacidades científicas avançadas.
A simulação temporal permite analisar a evolução do sistema ao longo do tempo, resolvendo o sistema de equações diferenciais. A imagem acima mostra visualmente como as concentrações de substrato (S_s), biomassa (X_b) e oxigênio (S_o) evoluem ao longo do tempo.
O método simular_evolucao_temporal() em cinetica.py resolve o sistema de EDOs:
evolucao = matriz.simular_evolucao_temporal(
s_s_inicial=200.0, # mg/L (DBO inicial)
s_o_inicial=2.0, # mg/L (O2 inicial)
x_b_inicial=1000.0, # mg/L (biomassa inicial)
vazao_m3_dia=500.0, # m³/dia
volume_m3=166.67, # m³
tempo_simulacao_dias=10.0, # dias
dt_dias=0.1 # passo de tempo
)
O método retorna um dicionário com a evolução temporal de cada componente:
Após a simulação, é possível analisar o estado estacionário:
Na interface visual:
from database import DatabaseManager
from calculos import CalculadorEfluentes
db = DatabaseManager("efluentes.db")
calculador = CalculadorEfluentes(db)
# Com Matriz de Petersen
demanda = calculador.calcular_demanda_oxigenio_total(
vazao_m3_dia=500.0,
dbo_mg_l=200.0,
tkn_mg_l=30.0,
usar_matriz_petersen=True,
s_o=2.0, # mg/L (O2 no reator)
x_b=3000.0, # mg/L (biomassa)
volume_m3=166.67 # m³
)
print(f"Demanda Total: {demanda['demanda_total_kg_dia']:.2f} kg O2/dia")
print(f"Método: {demanda['metodo_usado']}")
print(f"O2 Crescimento: {demanda['demanda_crescimento_kg_dia']:.2f} kg/dia")
print(f"O2 Decaimento: {demanda['demanda_decaimento_kg_dia']:.2f} kg/dia")
Obrigatórias:
numpy>=1.21.0: Para cálculos numéricos e operações matriciais.Opcionais:
scipy>=1.7.0: Necessário apenas para simulação temporal (método simular_evolucao_temporal()).Nota: O sistema funciona completamente sem scipy, mas a simulação temporal requer scipy para integração numérica das EDOs.
Implementado com Sucesso:
MatrizPetersen em cinetica.py)calculos.py (método calcular_demanda_oxigenio_total())scipy.integrate.odeint)parametros_cineticosSistema Agora:
Conclusão do Capítulo: A integração completa da Matriz de Petersen ao sistema permite que engenheiros escolham o nível de precisão necessário para cada análise, desde estimativas rápidas até cálculos exatos com simulação temporal. O sistema mantém compatibilidade total enquanto oferece capacidades científicas avançadas, elevando o simulador de um sistema baseado em aproximações empíricas para um modelo dinâmico cientificamente soberano.
Esta apostila apresentou uma visão consolidada e estruturada da documentação do projeto "Simulador de Efluentes". Através dos capítulos, exploramos desde os conceitos teóricos fundamentais até os detalhes de implementação de cada componente do sistema de tratamento de lodos ativados.
Fica evidente a robustez do sistema, que não apenas realiza os cálculos de dimensionamento e operacionais, mas também os valida contra princípios da termodinâmica e normas legais, garantindo resultados coerentes e confiáveis.
O destaque especial vai para a implementação da Matriz de Petersen, que eleva o simulador de um sistema baseado em aproximações empíricas para um modelo dinâmico cientificamente soberano, baseado em balanço de elétrons e princípios fundamentais da engenharia química.
A estrutura modular e a filosofia de desenvolvimento baseada em "Física antes da Lógica" tornam o projeto uma excelente ferramenta de estudo e um poderoso simulador para engenheiros da área ambiental e química. O material aqui compilado serve como um registro permanente e um guia de referência para o uso, manutenção e evolução futura do sistema.
Dedicatória:
Ao Prof. Urivald Pawlowski, que nos ensinou que o código sem a física é apenas ruído, e que a verdadeira engenharia nasce da compreensão profunda dos fenômenos. Obrigado por nos mostrar o caminho da soberania técnica.
Navegação no pacote: Portal ETE · Apostila de P&D (TR) · Laboratório Ouro 4.0 · Download · Canal de feedback · Referência UFPR (local)
Este projeto foi desenvolvido como uma ferramenta de simulação e dimensionamento de Estações de Tratamento de Efluentes, combinando conhecimentos de Engenharia Química com desenvolvimento de software, seguindo a filosofia de "Física antes da Lógica".
Desenvolvido com rigor científico e paixão pela Engenharia Química 🧪⚗️