Obtenção experimental de diagramas de Bode
utilizando PSPICE como substituição de hardware

 

Junho09, José Gaspar

 

 

Objectivos desta página:

 

- Leitura de ganhos e desfasagens de circuitos em regime forçado sinusoidal.

- Utilização de ganhos e desfasagens para a construção de diagramas de Bode.

 

 

O que esta página não é:

 

Nesta página utiliza-se o PSPICE como uma substituição de circuitos reais (hardware). Notar que existem formas mais adequadas de utilizar o PSPICE para obter diagramas de Bode: em particular seria mais adequado realizar "AC analysis", em vez da análise do tempo actualmente configurada (e necessária para os objectivos do trabalho descrito nesta página).

 

 

1. Circuitos de teste

 

Uma forma prática de comparar a resposta em frequência de vários circuitos dinâmicos consiste na montagem dos vários circuitos em paralelo, sendo alimentados por uma única fonte de sinal. A fig.1 mostra precisamente seis circuitos dinâmicos, vin(t) → voutN(t), N=1..6. Notar em particular que R1=R2=R61=R62, C1=C2=C61=C62, R3=R4=R5, C3=C4=C5, L3=L4=L5. Por outras palavras, os números 1 e 2, e os números 4, 5 e 6, indicam circuitos compostos pelos mesmos componentes.

Fig.1 Seis circuitos alimentados pela mesma fonte de sinal.

 

 

2. Simulação em PSPICE e display dos resultados

 

Nesta secção assume-se que está instalado: (i) o simulador de circuitos PSPICE (student version 9.1), e (ii) Matlab ou Octave.

 

A simulação dos circuitos e a visualização de resultados realiza-se da seguinte forma:

 

a) Descomprimir para uma pasta o ficheiro seguinte (clicar para download):

 

         dbode.zip

 

b) Abrir o ficheiro "dbode.opj" com o programa Capture incluído no pacote do PSPICE.

 

c) Geração de sinal com o Matlab ou o Octave:

 

            >> cd c:\directoria\onde\descomprimiu\o\zip

            >> myexp('mksrc', 1000)

 

d) Simulação do circuito com o PSPICE (programa Capture, menu "pspice -> run")

 

e) Visualização de resultados com o Matlab ou o Octave:

 

            >> myexp('ld'); myexp('sh')

 

f) A escolha de outras frequências, por exemplo 123rad/s, pode ser realizada no Matlab / Octave com o comando seguinte:

 

            >> mkexp('mksrc', 123)

 

g) Para realizar simulação com PSPICE e visualizar os resultados, repetir passos (d)-(e).

 

Fig.2 Exemplo de um resultado de simulação visualizado no Matlab. Para visualizar somente Vin e Vout1, i.e. excluir Vout2..Vout6, e limitar a escala de tempo ao último período da simulação (mais um resto de período incompleto), utilizou-se a seguinte sintaxe: >> myexp('sh', struct('sid',0:1, 'lastc',1))

 

2.1 Visualização selectiva de sinais e da escala do tempo

 

Cada simulação em PSPICE gera sinais de tensão e corrente em todos os nós e ramos do circuito. Por defeito o comando myexp('sh') mostra somente o sinal de entrada vin(t) e os seis sinais de saída vout1(t)..vout6(t). Desejando visualizar somente alguns dos sete sinais considerados pelo comando myexp, pode ser acrescentado um argumento de selecção da seguinte forma:

            >> myexp('sh', [0 1 3])

significando a visualização dos sinais vin(t), vout1(t) e vout3(t) respectivamente identificados pelos números 0, 1 e 3. No caso de serem necessários mais argumentos de configuração, pode-se usar a sintaxe alternativa:

            >> myexp('sh', struct('sid', [0 1 3]))

 

Desejando visualizar só a parte final da simulação, i.e. procurando excluir o regime transitório e escolher somente um número pequeno de ciclos para mais fácil leitura de amplitudes e desfasagens (ver mais detalhes na secção 4), pode ser utilizado o argumento 'lastc':

            >> myexp('sh', struct('sid', [0 1 3], 'lastc', 2))

Neste último exemplo escolhem-se somente dois dos últimos ciclos (períodos) completos da simulação. Na figura 2, escolheu-se somente o último período.

 

 

2.2 Simulação do circuito em várias frequências

 

Para simular várias frequências com um comando único de Matlab/Octave, basta utilizar o comando 'multi_freq', e listar as frequências desejadas:

            >> myexp('multi_freq', [.1 .2 .5 1 2 5 10]*1e3)

Este comando gera um ficheiro "stimulus" para cada uma das frequências, e após a geração do ficheiro solicita a simulação do circuito em PSPICE. Para visualizar os resultados, pode ser utilizado o comand 'sh':

            >> for i=1:7, myexp('set',i); myexp('sh', [0 4]); drawnow; pause(0.5); end

ou simplesmente o comando 'anim':

            >> myexp('anim', [0 4])

Desejando sobrepor gráficos, pode utilizar-se o "hold on":

            >> figure(123); clf; hold on; myexp('anim', [0 4])

 

 

3. Medida de ganho e de desfasagem (phasor)

 

A medida do ganho e da desfasagem por exemplo de Vin para Vout1, pode ser realizada medindo simplesmente as amplitudes de entrada e de saída, bem como o tempo de atraso entre as duas sinusóides e o período. Por exemplo na figura 2 o sinal de entrada tem 2 Volt pico a pico (Vpp), o sinal de saída 0.89Vpp, o tempo de atraso entre sinusóides é aproximadamente 0.5ms e o período é aproximadamente 3.1ms, pelo que os valores de ganho e desfasagem valem:

 

 

            ganho              G= 0.89Vpp/2.0Vpp= 0.445             Gdb= -7dB

            desfasagem     ϕ= -(0.5/3.1)*360º= -58.06º              (fase negativa significa atraso na resposta)

 

Assumindo que Vin é representado por um phasor de magnitude unitária e com fase zero, i.e. Vin= 10º, então Vout1 será um phasor com magnitude 0.445 .e fase -58.06º, i.e.

 

            Vout1= 0.445-58.06º.

 

 

4. Curvas XY

 

Em vez de visualizar simplesmente as respostas sinusoidais no tempo, por exemplo vin(t) e vout1(t), em alguns casos é mais informativo visualizar uma sinusóide em função de outra, por outras palavras representar vout1(vin). Nesta representação, conhecida por "modo XY" em osciloscópios, a amplitude de um sinal é marcada no eixo X e a amplitude do outro sinal é marcada no eixo Y. A composição de X e Y no caso de funções sinusoidais forma curvas de Lissajous. No caso de ambas as curvas terem a mesma frequência, a curva resultante será em geral uma elipse, sendo que se obtém um círculo quando as amplitudes são iguais e a diferença de fase é de 90º.

 

Supondo que realizou a experiência descrita atrás envolvendo multiplas frequências (comando 'multi_freq'), e que seleccionou a experiência 4 (myexp('set',4)), então o comando seguinte mostra em modo XY as saídas Vout1 e Vout2, quando a entrada é uma sinusóide com frequência 1000rad/s:

 

      myexp('sh', struct('xyplot',[], 'l5c',[], 'sid',1:2))

 

Para ver todas as frequências:

 

            for i=1:7,

            myexp('set',i);

            myexp('sh', struct('xyplot',[], 'l5c',[], 'sid',1:2));

            axis equal; drawnow; pause(0.5);

      end

 

Nota: o comando "axis equal" torna iguais as escalas horizontal e vertical, e por isso torna imediatamente visível qual dos dois sinais (Vout1 ou Vout2), tem maior amplitude.

 

 

5. Funções de transferência dos vários circuitos

 

As funções de transferência VoutN(s) / Vin(s) são efectivamente a melhor forma de entender o comportamento em frequência dos vários filtros. Por exemplo a saída 1, corresponde a um divisor de tensão em C1 e R1, sendo o elemento de interesse C1:

 

 

Verificar por exemplo que na saída 4, a função de transferência é:

 

 

Neste último exemplo qual é o número de pólos e de zeros, qual é a frequência natural, e qual é o tipo de filtragem realizado? Notar que estas questões se respondem simplesmente por inspecção da equação. Para os restantes circuitos (Vout2, Vout3, Vout5 e Vout6), será em tudo semelhante, e em particular também a simples inspecção permite prever imediatamente o tipo de filtragem.