Skip to content

Commit 6123f29

Browse files
Update README.md
1 parent 4211935 commit 6123f29

1 file changed

Lines changed: 199 additions & 124 deletions

File tree

README.md

Lines changed: 199 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,148 +1,223 @@
1-
# ⚙️ Ferramenta Computacional para Análise de Sistemas de Controle ⚙️
1+
<div align="center">
22

3-
![Versão Python](https://img.shields.io/badge/python-3.10%2B-blue)
4-
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
3+
<img src="https://img.shields.io/badge/Python-3.10%2B-3776AB?style=for-the-badge&logo=python&logoColor=white"/>
4+
<img src="https://img.shields.io/badge/License-MIT-22c55e?style=for-the-badge"/>
5+
<img src="https://img.shields.io/badge/Status-Concluído-22c55e?style=for-the-badge"/>
6+
<img src="https://img.shields.io/badge/TCC-UFERSA%202025-orange?style=for-the-badge"/>
57

6-
**Trabalho de Conclusão de Curso - Engenharia de Computação**
7-
*Aluno: Luís Fernando Alexandre dos Santos*
8-
*Orientador: Prof. Dr. Cecilio Martins de Sousa Neto*
9-
*Universidade Federal Rural do Semi-Árido - 2025*
8+
<br/><br/>
109

11-
## 📜 Descrição Geral
10+
# ⚙️ SysControl — Ferramenta de Análise de Sistemas de Controle
1211

13-
Esta é uma ferramenta computacional desenvolvida em Python com o objetivo de **auxiliar estudantes e profissionais** das áreas de Engenharia (Controle, Computação, Elétrica, Mecatrônica) na **análise, projeto e caracterização de sistemas de controle dinâmicos**.
12+
> **Aplicação desktop completa para análise, projeto e simulação de sistemas de controle dinâmicos.**
13+
> Desenvolvida como Trabalho de Conclusão de Curso em Engenharia de Computação.
1414
15-
A aplicação oferece uma interface gráfica intuitiva que permite:
16-
* Analisar a estabilidade de sistemas lineares pelo critério de **Routh-Hurwitz**.
17-
* Extrair parâmetros de desempenho ($\omega_n$, $\zeta$) de **sistemas de segunda ordem**.
18-
* Realizar uma análise textual e gráfica completa do **Lugar Geométrico das Raízes (LGR)**.
19-
* Projetar e simular controladores clássicos **PI, PD e PID**, comparando a resposta temporal, o LGR e o mapa de polos/zeros do sistema original versus o sistema controlado.
15+
<br/>
2016

21-
## ✨ Módulos Principais
17+
_Autor: **Luís Fernando Alexandre dos Santos**_
18+
_Orientador: **Prof. Dr. Cecilio Martins de Sousa Neto**_
19+
_Universidade Federal Rural do Semi-Árido — UFERSA · 2025_
2220

23-
A ferramenta é dividida em quatro módulos independentes, cada um focado em uma etapa diferente da análise de sistemas de controle.
21+
</div>
2422

25-
| Módulo | Screenshot |
26-
| :--- | :--- |
27-
| **1. Tela Principal** | ![Tela Principal](image/tela1.png) |
28-
| **2. Análise de Estabilidade** | ![Análise de Estabilidade](image/tela2.png) |
29-
| **3. Análise de Sistema 2ª Ordem** | ![Análise de Sistema 2ª Ordem](image/tela3.png) |
30-
| **4. Lugar Geométrico das Raízes** | *![LGR](image/tela4.png)* |
31-
| **5. Análise de Controladores** | ![Análise de Controladores](image/tela5.png) |
23+
---
24+
25+
## 📌 Visão Geral
26+
27+
O **SysControl** é uma ferramenta educacional desenvolvida em Python com interface gráfica moderna, destinada a estudantes e profissionais de Engenharia de Controle, Computação, Elétrica e Mecatrônica.
28+
29+
A aplicação reúne em um único ambiente:
30+
31+
- ✅ Análise de **estabilidade** via Critério de Routh-Hurwitz
32+
- ✅ Extração de **parâmetros** de sistemas de segunda ordem (ωₙ, ζ, K)
33+
- ✅ Análise completa do **Lugar Geométrico das Raízes (LGR)**
34+
- ✅ Projeto e simulação de **controladores PI, PD e PID** com comparativos gráficos
3235

3336
---
3437

35-
## 🧭 Funcionalidades dos Módulos
36-
37-
A aplicação é dividida em quatro módulos principais, acessíveis pela tela inicial:
38-
39-
### 1. 📊 Análise de Estabilidade
40-
* **Objetivo:** Avaliar a estabilidade de um sistema a partir de sua **equação característica**.
41-
* **Funcionalidade:** Implementa o **Critério de Routh-Hurwitz**, gerando a tabela de Routh formatada e indicando o número de polos instáveis.
42-
* **Entrada:** Coeficientes do polinômio característico (denominador).
43-
* **Saída:** Relatório textual completo, incluindo a tabela de Routh, as raízes do polinômio (polos) e uma conclusão clara sobre a estabilidade do sistema.
44-
45-
### 2. ⚙️ Análise de Sistema 2ª Ordem
46-
* **Objetivo:** Extrair parâmetros fundamentais e métricas de desempenho de um sistema de segunda ordem.
47-
* **Funcionalidade:** Recebe a função de transferência (numerador e denominador) e calcula os parâmetros $\omega_n$ (frequência natural), $\zeta$ (coeficiente de amortecimento) e K (ganho).
48-
* **Saída:** Relatório textual detalhado com todos os parâmetros, classificação do sistema (subamortecido, etc.) e as métricas de resposta temporal (Tr, Tp, Ts, Mp).
49-
50-
### 3. 📌 Lugar Geométrico das Raízes (LGR)
51-
* **Objetivo:** Fornecer uma análise completa, textual e gráfica, do LGR de um sistema em malha aberta.
52-
* **Funcionalidade:** Este módulo dedicado calcula todas as 6 regras de construção do LGR.
53-
* **Saída:**
54-
* **Gráfico Interativo:** Plota os polos, zeros, ramos, segmentos do eixo real e assíntotas.
55-
* **Relatório Detalhado:** Gera um relatório de texto completo, formatado de maneira didática, contendo:
56-
1. Polos e Zeros.
57-
2. Segmentos do eixo real que pertencem ao LGR.
58-
3. Cálculo das Assíntotas (centro e ângulos).
59-
4. Pontos de Entrada/Saída (cálculo de dK/ds = 0).
60-
5. Ângulos de Partida e Chegada (para polos/zeros complexos).
61-
6. Análise de **Routh-Hurwitz** para encontrar o **Ganho Crítico (K)** e os pontos de **cruzamento com o eixo jω**.
62-
63-
### 4. 🎮 Análise de Controladores (PI, PD, PID)
64-
* **Objetivo:** Projetar, simular e comparar o desempenho de um sistema com e sem um controlador.
65-
* **Funcionalidade:** Permite ao usuário definir a planta G(s), o tipo de entrada (Degrau/Rampa) e os ganhos (Kp, Ki, Kd) do controlador.
66-
* **Saída:** Uma interface multi-abas com comparativos lado a lado:
67-
* **Resposta Temporal:** Gráfico da saída $y(t)$ do sistema original vs. sistema controlado.
68-
* **Lugar das Raízes:** Gráfico do LGR de $G(s)$ vs. $G_c(s)G(s)$.
69-
* **Polos e Zeros:** Mapa de polos/zeros do sistema *final* (malha fechada).
70-
* **Métricas:** Tabela comparativa de desempenho (Tr, Ts, Mp, etc.).
71-
* **Nova Funcionalidade:** A aba LGR deste módulo permite ao usuário especificar **polos dominantes desejados** (inserindo $\zeta$ e $\omega_n$) e exibe no gráfico a linha de $\zeta$ constante e os polos desejados, auxiliando no projeto do controlador.
38+
## 🖥️ Interface da Aplicação
39+
40+
| Módulo | Tela |
41+
|--------|------|
42+
| 🏠 Tela Principal | ![Tela Principal](image/tela1.png) |
43+
| 📊 Análise de Estabilidade | ![Análise de Estabilidade](image/tela2.png) |
44+
| ⚙️ Sistema de 2ª Ordem | ![Análise de Sistema 2ª Ordem](image/tela3.png) |
45+
| 📌 Lugar Geométrico das Raízes | ![LGR](image/tela4.png) |
46+
| 🎮 Análise de Controladores | ![Análise de Controladores](image/tela5.png) |
47+
48+
---
49+
50+
## 🧩 Módulos
51+
52+
### 📊 1. Análise de Estabilidade
53+
54+
Determina a estabilidade de um sistema a partir de sua equação característica.
55+
56+
- Implementa o **Critério de Routh-Hurwitz** com geração automática da tabela
57+
- Identifica o número de **polos instáveis** (semiplano direito)
58+
- Exibe as **raízes do polinômio** e uma conclusão clara sobre a estabilidade
59+
60+
**Entrada:** coeficientes do polinômio característico
61+
**Saída:** tabela de Routh formatada + relatório textual completo
62+
63+
---
64+
65+
### ⚙️ 2. Análise de Sistema de 2ª Ordem
66+
67+
Extrai parâmetros e métricas de desempenho de sistemas de segunda ordem.
68+
69+
| Parâmetro | Descrição |
70+
|-----------|-----------|
71+
| ωₙ | Frequência natural |
72+
| ζ | Coeficiente de amortecimento |
73+
| K | Ganho estático |
74+
| Tr | Tempo de subida (10% → 90%) |
75+
| Tp | Tempo de pico |
76+
| Mp (%) | Máximo sobressinal |
77+
| Ts | Tempo de acomodação (±2%) |
78+
79+
Classifica automaticamente o sistema: **subamortecido**, **criticamente amortecido** ou **superamortecido**.
80+
81+
---
82+
83+
### 📌 3. Lugar Geométrico das Raízes (LGR)
84+
85+
Análise gráfica e textual completa do LGR de um sistema em malha aberta.
86+
87+
**Regras de construção calculadas:**
88+
1. Polos e zeros do sistema
89+
2. Segmentos do eixo real pertencentes ao LGR
90+
3. Assíntotas — centro e ângulos
91+
4. Pontos de entrada/saída (`dK/ds = 0`)
92+
5. Ângulos de partida e chegada (polos/zeros complexos)
93+
6. **Ganho Crítico (K)** e cruzamentos com o eixo jω via Routh-Hurwitz
94+
95+
**Saídas:** gráfico interativo com polos, zeros, ramos e assíntotas + relatório didático detalhado
96+
97+
---
98+
99+
### 🎮 4. Análise de Controladores (PI · PD · PID)
100+
101+
Projeta, simula e compara o desempenho do sistema com e sem controlador.
102+
103+
**Interface multi-abas com comparativos lado a lado:**
104+
105+
| Aba | Conteúdo |
106+
|-----|----------|
107+
| 📈 Resposta Temporal | y(t) — sistema original vs. controlado |
108+
| 📌 Lugar das Raízes | LGR de G(s) vs. Gc(s)·G(s) |
109+
| 🗺️ Polos e Zeros | Mapa do sistema em malha fechada |
110+
| 📋 Métricas | Tabela comparativa (Tr, Ts, Mp, e_ss...) |
111+
112+
> **Funcionalidade extra:** a aba LGR permite definir **polos dominantes desejados** a partir de ζ e ωₙ, exibindo a linha de ζ constante no gráfico para auxiliar no projeto.
72113
73114
---
74115

75-
## 🧠 Conceitos Teóricos Abordados
76-
77-
A ferramenta se baseia em conceitos fundamentais da Teoria de Controle Clássico:
78-
79-
* **Função de Transferência:** Representação matemática da dinâmica de um sistema linear no domínio de Laplace, $G(s) = \frac{N(s)}{D(s)}$.
80-
* **Sistemas de Segunda Ordem:** Sistemas cuja dinâmica é descrita por uma equação diferencial de segunda ordem. A forma padrão em malha fechada é $G(s) = \frac{K \omega_n^2}{s^2 + 2\zeta\omega_n s + \omega_n^2}$, onde:
81-
* $\omega_n$: Frequência natural (velocidade da resposta).
82-
* $\zeta$: Coeficiente de amortecimento (forma da resposta: subamortecida, crítica, superamortecida).
83-
* **Estabilidade (Critério de Routh-Hurwitz):** Método algébrico que, a partir da equação característica, determina o número de polos no semiplano direito (indicando instabilidade).
84-
* **Lugar Geométrico das Raízes (LGR):** Gráfico que mostra como os polos de malha fechada se movem no plano-s à medida que um ganho (K) varia de 0 a $\infty$.
85-
* **Resposta Temporal:** Comportamento da saída do sistema ao longo do tempo em resposta a uma entrada (Degrau ou Rampa). Métricas importantes incluem:
86-
* **Tempo de Subida (Tr):** Tempo para a resposta ir de 10% a 90% do valor final.
87-
* **Tempo de Pico (Tp):** Tempo para atingir o primeiro pico de sobressinal.
88-
* **Máximo Sobressinal (Mp%):** Percentual máximo que a resposta ultrapassa o valor final.
89-
* **Tempo de Acomodação (Ts):** Tempo para a resposta entrar e permanecer dentro de uma faixa (geralmente ±2%) do valor final.
90-
* **Erro em Regime Permanente ($e_{ss}$):** A diferença entre a entrada desejada e a saída do sistema após um longo tempo.
91-
* **Controladores PID:**
92-
* **Proporcional (P):** Atua proporcionalmente ao erro atual.
93-
* **Integral (I):** Atua na integral do erro passado (elimina o $e_{ss}$ para entradas degrau).
94-
* **Derivativo (D):** Atua na taxa de variação do erro (melhora a estabilidade e a resposta transitória).
116+
## 🧠 Base Teórica
117+
118+
```
119+
G(s) = N(s) / D(s) Função de Transferência
120+
121+
K · ωₙ²
122+
G(s) = ────────────────── Forma padrão de 2ª ordem
123+
s² + 2ζωₙs + ωₙ²
124+
```
125+
126+
| Conceito | Descrição |
127+
|----------|-----------|
128+
| **Função de Transferência** | Representação no domínio de Laplace |
129+
| **Routh-Hurwitz** | Método algébrico para análise de estabilidade |
130+
| **LGR** | Trajetória dos polos de malha fechada em função do ganho K |
131+
| **PID** | Controlador com ação proporcional, integral e derivativa |
132+
| **Erro em Regime (e_ss)** | Diferença entre referência e saída em regime permanente |
95133

96134
---
97135

98-
## 🛠️ Tecnologias Utilizadas
136+
## 🛠️ Stack Tecnológica
99137

100-
* **Python 3.10+**
101-
* **CustomTkinter:** Para a interface gráfica moderna e responsiva.
102-
* **Matplotlib:** Para a geração e exibição dos gráficos incorporados na interface.
103-
* **Control:** Biblioteca Python essencial para análise e projeto de sistemas de controle (criação de TF, `step_response`, `feedback`, `rlocus`, `poles`, `zeros`, `damp`).
104-
* **NumPy:** Para cálculos numéricos eficientes e manipulação de arrays.
105-
* **SciPy:** Utilizada para a simulação da resposta à rampa (`scipy.signal.lsim`).
106-
* **SymPy:** Utilizada para os cálculos simbólicos do LGR, como `dK/ds = 0`, e para a construção da tabela de Routh-Hurwitz com o ganho `k`.
107-
* **Pillow (PIL):** Necessário pelo `tela.py` para carregar e exibir imagens na interface.
138+
| Biblioteca | Uso |
139+
|------------|-----|
140+
| `CustomTkinter` | Interface gráfica moderna e responsiva |
141+
| `Matplotlib` | Geração e exibição de gráficos embutidos |
142+
| `Control` | Núcleo de análise de sistemas de controle |
143+
| `NumPy` | Cálculos numéricos e manipulação de arrays |
144+
| `SciPy` | Simulação da resposta à rampa (`lsim`) |
145+
| `SymPy` | Cálculos simbólicos do LGR e tabela de Routh |
146+
| `Pillow` | Carregamento de imagens na interface |
147+
148+
---
108149

109150
## 🚀 Como Executar
110151

111-
1. **Clone o repositório:**
112-
```bash
113-
git clone [https://github.com/luisFernandoJv/sistema-de-controle---an-lise-de-sistema-de-segunda-ordem-.git](https://github.com/luisFernandoJv/sistema-de-controle---an-lise-de-sistema-de-segunda-ordem-.git)
114-
cd sistema-de-controle---an-lise-de-sistema-de-segunda-ordem-
115-
```
116-
117-
2. **Crie e ative um ambiente virtual (recomendado):**
118-
```bash
119-
python -m venv venv
120-
source venv/bin/activate # Linux/macOS
121-
# ou
122-
.\venv\Scripts\activate # Windows
123-
```
124-
125-
3. **Instale as dependências:**
126-
*(Certifique-se de ter um arquivo `requirements.txt`)*
127-
```bash
128-
pip install -r requirements.txt
129-
```
130-
*Seu `requirements.txt` deve conter:*
131-
```
132-
customtkinter
133-
matplotlib
134-
control
135-
numpy
136-
scipy
137-
sympy
138-
Pillow
139-
```
140-
141-
4. **Execute a aplicação principal (`tela.py`):**
142-
```bash
143-
python tela.py
144-
```
152+
### 1. Clone o repositório
153+
154+
```bash
155+
git clone https://github.com/luisFernandoJv/sistema-de-controle---an-lise-de-sistema-de-segunda-ordem-.git
156+
cd sistema-de-controle---an-lise-de-sistema-de-segunda-ordem-
157+
```
158+
159+
### 2. Crie um ambiente virtual
160+
161+
```bash
162+
python -m venv venv
163+
164+
# Linux / macOS
165+
source venv/bin/activate
166+
167+
# Windows
168+
.\venv\Scripts\activate
169+
```
170+
171+
### 3. Instale as dependências
172+
173+
```bash
174+
pip install -r requirements.txt
175+
```
176+
177+
`requirements.txt`:
178+
```
179+
customtkinter
180+
matplotlib
181+
control
182+
numpy
183+
scipy
184+
sympy
185+
Pillow
186+
```
187+
188+
### 4. Execute a aplicação
189+
190+
```bash
191+
python tela.py
192+
```
193+
194+
---
195+
196+
## 📁 Estrutura do Projeto
197+
198+
```
199+
📦 sistema-de-controle/
200+
┣ 📂 image/ # Screenshots da interface
201+
┣ 📜 tela.py # Ponto de entrada — tela principal
202+
┣ 📜 estabilidade.py # Módulo 1: Análise de Estabilidade
203+
┣ 📜 segunda_ordem.py # Módulo 2: Sistema de 2ª Ordem
204+
┣ 📜 lgr.py # Módulo 3: Lugar Geométrico das Raízes
205+
┣ 📜 controladores.py # Módulo 4: Análise de Controladores
206+
┣ 📜 requirements.txt
207+
┗ 📜 README.md
208+
```
209+
210+
---
145211

146212
## 📄 Licença
147213

148-
Este projeto é distribuído sob a licença MIT.
214+
Distribuído sob a licença **MIT**. Consulte o arquivo [`LICENSE`](LICENSE) para mais detalhes.
215+
216+
---
217+
218+
<div align="center">
219+
220+
Desenvolvido com 💙 para a comunidade de Engenharia de Controle
221+
**UFERSA · Engenharia de Computação · 2025**
222+
223+
</div>

0 commit comments

Comments
 (0)