# Avaliação 1 - Síntese de RC Ativo
**Aluno:** Maurício Taffarel Barreto da Silva
**Professor:** Maicon Deivid Pereira
**Número:** 17
**Data:** 11/05/2021
## 1. Contextualização e parâmetros:
O seguinte trabalho tem como objetivo realizar a síntese de um filtro RC ativo, utilizando alguma topologia abordada na disciplina *Síntese de Circuitos*.
Para meu filtro, tenho os seguintes parâmetros de projeto:
- Função de aproximação: **Cauer**
- Tipo de filtro: **Passa alta**
- Número do aluno: **17**
- Limite da Banda de Passagem ($f_{p}$): $30kHz$
- Limite da Banda de Rejeição ($f_s$): $15kHz$
- Atenuação máxima na banda de passagem ($A_{máx}$): $0.3dB$
- Atenuação mínima na banda de rejeição ($A_{min}$): $70dB$
## 2. Determinação da ordem do filtro
Para determinar a ordem do filtro, temos o seguinte conjunto de equações:
$$q_{0}=\frac{1}{2}\left(\frac{1-\left(1-\left(\frac{w_{s}}{w_{p}}\right)^{2}\right)^{\frac{1}{4}}}{1+\left(1-\left(\frac{w_{s}}{w_{p}}\right)^{2}\right)^{\frac{1}{4}}}\right)$$
$$q=q_{0}+2q_{0}^{5}+15q_{0}^{9}+15015q_{0}^{13}+...$$
$$n\ge\frac{\log\left(\frac{1}{16}\cdot\left(\frac{10^{\frac{A_{max}}{10}}-1}{10^{\frac{A_{min}}{10}}-1}\right)\right)}{\log\left(q\right)}$$
O cálculo numérico realizado pode ser encontrado através deste [link](https://www.desmos.com/calculator/qbys1yda2j)
O valor encontrado foi:
$$n\ge5.35678212308$$
Assim, a ordem escolhida será $n=6$.
Para obtenção desta ordem do filtro através do software Octave foi utilizado a função `ellipord`:
```python=20
[Ne, Wne] = ellipord(wp, ws, A_max, A_min, "s");
```
Ao inserir na janela de comando, obtemos:
```python
>> Ne
Ne = 6
```
## 3. Obtenção do filtro
Sabendo a ordem do filtro, pode-se determinar, através do Octave, a função de transferência que implementa este filtro:
```python=21
[Be, Ae] = ellip(Ne, A_max, A_min, Wne,"high", "s");
```
A função retorna os coeficientes do numerador e do denonimador de $H(s)$, utilizando o comando `tf(B,A)`, pode-se determinar a função de transferência:
```bash
>> tf(Be,Ae)
Transfer function 'ans' from input 'u1' to output ...
0.9661 s^6 + 1.944e s^4 + 1.012e+20 s^2 + 8.527e+28
y1: --------------------------------------------------------------------------------------------
s^6 + 7.43e+05 s^5 + 3.306e+11 s^4 + 8.119e+16 s^3 + 1.866e+22 s^2 + 1.893e+27 s + 2.697e+32
```
A função retornada foi:
$$
T\left(s\right)=\frac{0.9661s^{6}+1.944e10s^{4}+1.01e10s^{2}+8.53e28}{s^{6}+7.43e5s^{5}+3.31e11s^{4}+8.12e16s^{3}+1.87e22s^{2}+1.89e27s+2.7e32}
$$
## 4. Obtenção dos biquads
A função de transferência acima pode ser implementada através de pequenos blocos menores, conhecidas como biquads, este procedimento pode ser obtido separando os pólos e zeros da função, para isso, utiliza-se mais uma vez o Octave:
Para obter os pólos e zeros:
```python=22
[zn, pn, kn] = tf2zp(Be, Ae);
```
Para separar os pólos e zeros, criando os polinômios do numerador e denominador dos biquads:
```python=116
b1n = poly([zn(1) zn(2)]);
b2n = poly([zn(3) zn(4)]);
b3n = poly([zn(5) zn(6)]);
b1d = poly([pn(1) pn(2)]);
b2d = poly([pn(3) pn(4)]);
b3d = poly([pn(5) pn(6)]);
```
Obtenção dos biquads:
```python=125
T1 = tf(b1n, b1d)
T2 = tf(b2n, b2d)
T3 = tf(b3n, b3d)
```
Ao executar o script `mauricio.m` com a linha *124* comentada:
```python
>> mauricio
Transfer function 'T1' from input 'u1' to output ...
s^2 - 1.455e-11 s + 1.202e+10
y1: -----------------------------
s^2 + 5.937e+05 s + 1.53e+11
Continuous-time model.
Transfer function 'T2' from input 'u1' to output ...
s^2 - 1.455e-11 s + 7.057e+09
y1: -----------------------------
s^2 + 1.24e+05 s + 5.18e+10
Continuous-time model.
Transfer function 'T3' from input 'u1' to output ...
s^2 + 1.819e-12 s + 1.04e+09
y1: ----------------------------
s^2 + 2.53e+04 s + 3.404e+10
Continuous-time model.
```
Assim, obtemos então os biquads da função $T(s)$ que queremos implementar:
$$T_{1}\left(s\right)=\frac{s^{2}-1.455\cdot10^{-11}s+1.202\cdot10^{10}}{s^{2}+5.937\cdot10^{5}s+1.53\cdot10^{11}}$$
$$T_{2}\left(s\right)=\frac{s^{2}-1.455\cdot10^{-11}s+7.057\cdot10^{9}}{s^{2}+1.24\cdot10^{5}s+5.18\cdot10^{10}}$$
$$T_{3}\left(s\right)=\frac{s^{2}+1.819\cdot10^{-12}s+1.04\cdot10^{9}}{s^{2}+2.53\cdot10^{4}s+3.404\cdot10^{10}}$$
## 5. Síntese das funções dos biquads
### 5.1 Escolha da topologia
A topologia de circuito utilizado para a síntese dos biquads foi a a *Feed-Forward*, pois apresenta a versatilidade no sinal de um dos coeficientes (os meus biquads possuem sinais diferentes o termo linear em s nos numeradores).
$$\frac{V_{o}\left(s\right)}{Vi\left(s\right)}=-\frac{R_{5}}{R_{S2}}\frac{s^{2}+\left(\frac{1}{R_{2}}-\frac{R_{S2}}{R_{S1}R_{4}}\right)\frac{1}{C}s+\frac{R_{S2}}{R_{4}R_{1}R_{S3}C^{2}}}{s^{2}+\frac{1}{R_{2}C}s+\frac{R_{5}}{R_{4}R_{1}RC^{2}}}$$
Além disso, a arquitetura, permite sintetizar um circuito apenas com 3 ampops.
<center>
<img src=https://i.imgur.com/ORfpj8F.png>
</center>
### 5.2 Obtenção das equações
Para sintetizar os biquads, devemos encontrar componentes discretos que implementem a função transferência. Para isso:
$$T_{i}\left(s\right)=\frac{s^{2}+b_{1}s+b_{0}}{s^{2}+a_{1}s+a_{0}}=-\frac{R_{5}}{R_{S2}}\frac{s^{2}+\left(\frac{1}{R_{2}}-\frac{R_{S2}}{R_{S1}R_{4}}\right)\frac{1}{C}s+\frac{R_{S2}}{R_{4}R_{1}R_{S3}C^{2}}}{s^{2}+\frac{1}{R_{2}C}s+\frac{R_{5}}{R_{4}R_{1}RC^{2}}}$$
Para se obter estes componentes, realiza-se algumas simplificações:
Para ajuste em um ganho unitário:
$$\frac{R_{5}}{R_{S2}}=1$$
Comparando as equações acima lado a lado, temos:
$a_{1}=\frac{1}{R_{2}C}\implies R_{2}=\frac{1}{a_{1}C}$
$b_{1}=\left(\frac{1}{R_{2}}-\frac{R_{S2}}{R_{S1}R_{4}}\right)\frac{1}{C}\implies b_{1}=a_{1}-\frac{R_{S2}}{R_{S1}R_{4}C}\implies R_{S1}=\frac{R_{S2}}{R_{4}C\left(a_{1}-b_{1}\right)}$
$a_{0}=\frac{R_{5}}{R_{4}R_{1}RC^{2}}\implies R_{1}=\frac{R_{5}}{a_{0}RC^{2}R_{4}}$
$b_{0}=\frac{R_{S2}}{R_{4}R_{1}R_{S3}C^{2}}\implies R_{S3}=\frac{a_{0}}{b_{0}}R$
Agora dispondo de equações para se obter $R_2, R_{S1}, R_{1}, R_{S3}$, temos graus de liberdade para escolher valores dos componenets $R_4, R_5,R_{S2},R$ e $C$.
### 5.3 Obtenção dos componentes
Todos os valores de resistência devem estar na ordem de $k\Omega$, para fins de simplificação, escolhi $R_4=R_5=R_{S2}=R=1k\Omega$ e $C=1nF$. Como não está no escopo deste trabalho, os valores de resistências encontrados, não foram ajustados para valores próximos de componentes comerciais, contudo isto pode ser facilmente determinado, caso filtro realmente for implementado físicamente, através deste [link](https://www.desmos.com/calculator/dbuwfnrzch)
Os demais parâmetros foram encontrados utilizando a calculadora gráfica acima e foram reunidos, juntamente com os demais, na tabela abaixo:
| Parâmetro | $T_1(s)$ | $T_2(s)$ | $T_3(s)$ |
|:---------:|:-------------:|:-------------:|:-------------:|
| $R_1$ | $6536\Omega$ | $19305\Omega$ | $29377\Omega$ |
| $R_2$ | $1684\Omega$ | $8064\Omega$ | $39525\Omega$ |
| $R_{S1}$ | $1684\Omega$ | $8064\Omega$ | $39525\Omega$ |
| $R_{S3}$ | $12729\Omega$ | $7340\Omega$ | $32731\Omega$ |
| $R_{4}$ | $1000\Omega$ | $1000\Omega$ | $1000\Omega$ |
| $R_{5}$ | $1000\Omega$ | $1000\Omega$ | $1000\Omega$ |
| $R_{S2}$ | $1000\Omega$ | $1000\Omega$ | $1000\Omega$ |
| $R$ | $1000\Omega$ | $1000\Omega$ | $1000\Omega$ |
| $C$ | $1nF$ | $1nF$ | $1nF$ |
Note que $R_{2}=R_{S1}$, isto pode ser observado observando as equações destes parâmetros quando $R_S2=R_4$ e $b_1\rightarrow 0$. No nosso caso isso aconteceu por que escolhemos $R_S2=R_4$ e o $b_1$ está na ordem de $10^{-11}$. Caso esse filtro fosse implementado fisicamente, a tarefa se resumiria a encontrar o valor de apenas 3 componentes, escolhendo os valores de todos os demais!
Assim, utilizando a topologia descrita anteriormente, obtem-se o circuito total que sintetiza o $T(s)$:
<center>
<img src="https://i.imgur.com/YEnnfrC.png">
</center>
## 6. Gráficos da funções apresentadas
Nesta parte, iremos observar a resposta em frequência do filtro teórico, obtido no Octave e a resposta em frequência do filtro simulado no LTSpice.
Importante comentar que para comparar as funções foi utilizado um recurso de multiplicar um escalar à função de transferência obtida por simulação do circuito
projetado, para ajustar o ganho na banda de passagem ao teórico.
```python=26
g = (-kn)*g;
```
> O sinal negativo em questão é para corrigir o sinal total da função de transferência, já que eu possuo um número impar de estágios de biquads (3) e todos apresentam um sinal negativo na função, deste modo o sinal resultante é negativo.
> Isso poderia ser facilmente corrigido na prática através de um estágio simples adicional usando um amplificador operacional, isto não foi feito para fins de simplificação.
### 6.1 Resposta em frequência (amplitude)
<center>
<img src="https://i.imgur.com/1KaVzJU.png">
</center>
A resposta em frequência simulada obtida confere, com boa aproximação, com a função teórica, isso se deve ao fato de que escolhemos os exatos valores de componentes especificados, na prática, poderiamos ter alguma discrepância na implementação física. As respostas atendem os parâmetros de projeto, estando dentro dos limites estabelecidos, possuindo uma banda passante razoavelmente planar e uma atenuação na banda de rejeição acima do desejado.
## 6.2 Resposta em frequência (Banda de passagem)
<center>
<img src="https://i.imgur.com/VveBRC0.png">
</center>
O resultado obtido mais uma vez, satisfatório, estando dentro dos limites estabelecidos, neste recorte é possível perceber o ripple na banda de passagem, que é existente na função de aproximação de Cauer, contudo, está dentro dos limites de até $-0.3dB$, este limite permite que a amplitude do sinal de saída normalizado pelo sinal de entrada, para esta faixa de frequência (banda passante), respeite estes limites:
$$0.966\le\frac{v_{0}\left(t\right)}{v_i\left(t\right)}\le1$$
Podemos também fazer outro recorte para ver se o circuito atende os parâmetros de projetos no limite da banda de passagem.
<center>
<img src="https://i.imgur.com/5KTw7q6.png">
</center>
## 6.3 Resposta em frequência (Banda de rejeição)
<center>
<img src="https://i.imgur.com/HzcSuUp.png">
</center>
É possível verificar que o circuito também atende os requisitos de projeto no limite da banda de rejeição, no qual é atendido uma atenuação de no mínimo $70dB$. Isso representa um ganho, para essa banda de frequência (banda de rejeição), no seguinte intervalo:
$$
0\le\frac{v_{0}\left(t\right)}{v_i\left(t\right)}\le0.00032
$$
Como os demais zeros impoem aos demais lódulos uma elevada atenuação na banda de rejeição, iremos apenas analisar o lódulo logo após a banda de transição.
<center>
<img src="https://i.imgur.com/rhcB7vQ.png">
</center>
O filtro em questão, tanto o simulado quanto o teórico, respeita os limites do parâmetros de projeto com atenuação mínima de $70dB$.
## 6.4 Resposta em frequência (fase)
E por último, mas não menos importante, a danada da fase, que não foi levada em consideração neste projeto, mas possui uma fundamental importância, também apresenta a resposta em frequência muito próxima da teórica obtida.
<center>
<img src="https://i.imgur.com/ASB6QKs.png">
</center>
## 7. Obtenção da tabela de comparação com especificações do gabarito
Para obter as atenuações máximas e mínimas, podemos inserir os seguintes comandos, para função da aproximação:
```python
>> min(abs(Hs(w<ws)))
ans = 70.002
>> max(abs(Hs(w>wp)))
ans = 0.3000
```
Para o circuito simulado:
```python
>> min(abs(T1t(w<ws)))
ans = 70.011
>> max(abs(T1t(w>wp)))
ans = 0.2984
```
| | Frequência (Hz) | Atenuação especificada | Atenuação da função de aproximação ($dB$) | Atenuação do Circuito simulado |
| ----------------- |:---------------:| ---------------------- |:-----------------------------------------:|:------------------------------:|
| Banda de passagem | $f_p=30kHz$ | $\le A_{máx}=0.3$ | $0.3$ | $0.2984$ |
| Banda de rejeição | $f_p=15kHz$ | $\ge A_{min}=70$ | $70.002$ | $70.011$ |
###### tags: `Blog`,`UFBA`