Apostila de uso do SPICE João Paulo Cerquinho Cajueiro Universidade Federal de Pernambuco Departamento de Eletrônica e Sistemas Versão 0.2 2009.1 Objetivo Esta apostila tem como propósito ser uma base inicial para a utilização do simulador de circuitos SPICE para os alunos do curso de Eletrônica I da UFPE. Os princı́pios de utilização desta ferramenta são demonstrados a partir de vários exemplos. Esta ainda é uma versão preliminar deste texto, portanto vários conceitos importantes (como por exemplo simulação AC e ordem dos pinos de transistores) ainda não são mostrados. 1 fontes CC Cada linha é um elemento de circuito. A primeira letra indica o tipo do elemento, como por exemplo V para 1 fontes de tensão, I para fontes de corrente e R para resistores. Linhas que começam com um asterisco são comentários e com um ponto são comandos especiais do SPICE. A primeira linha do código SPICE é o titulo do circuito que será simulado e não representa nenhum elemento ou comando. A simulação e os gráficos de resultados são definidos dentro de um bloco de controle, delimitado pelos comandos .control e .endc. O código SPICE é finalizado com um comando .end. Um exemplo inicial é mostrado abaixo. Exemplo 1 - Fontes *Análises DC e tran *Descricao do circuito VEN 1 0 DC 10V R1 1 0 1k IEN 2 0 DC 10MA R2 2 0 1k *Analise .control tran 0.01ms 1ms plot v(1) v(2) dc ven 0 10 0.1 plot v(1) v(2) .endc .end Neste exemplo são mostradas 2 simulações. Uma no tempo (transiente), definida pelo comando tran e outra em DC em função de VEN, definida pelo comando dc. Estes são os dois tipos de simulação mais úteis para eletrônica I. Note que é possı́vel definir mais de uma simulação no mesmo arquivo. Os parâmetros da simulação transiente são o tamanho do passo e o tempo final da janela de simulação, com a opção de acrescentar um valor para o tempo inicial. Por exemplo, para fazer uma simulação de 2 a 5 segundos com passos de 1 ms o comando seria tran 1m 5s 2s1 . A simulação DC varia uma fonte independente de tensão ou corrente entre um valor inicial e um final e faz uma simulação de ponto de operação (ou seja, desprezando capacitores e indutores) passo-a-passo. No exemplo 1 acima, fazemos a variação de ven de 0V até 10V com passos de 0,1 V. O comando plot imprime um gráfico das variáveis que quisermos ver depois de uma simulação. Um outro detalhe importante presente neste exemplo é o uso de fatores de escala. O SPICE entende, por exemplo, 10k como sendo 10.000 e 1ms como sendo 0.001. A tabela abaixo mostra os fatores de escala do SPICE 1 Na verdade a simulação é de 0 a 5 s, mas o SPICE só vai guardar o resultado a partir de 2 s. Fator Tera Giga Mega Kilo Mili Mills Micro Nano Pico Femto Sı́mbolo t g meg k m mil u n p f Valor 1012 109 106 103 10−3 25, 4 · 10−6 10−6 10−9 10−12 10−15 Cada valor é definido por uma única letra, exceto no caso de Mega e Mills2 , para não confundir com Mili. Qualquer outra letra após o sı́mbolo é desconsiderada, portanto pode-se usar ms ou gHz (e normalmente devese usar para aumentar a legibilidade). 2 Onda senoidal Sinais senoidais aparecem frequentemente em estudos de circuito, portanto é natural que o SPICE tenha como definir um. O exemplo 2 mostra justamente isto. Exemplo 2 - Onda senoidal *Descricao do circuito VEN 1 0 DC 0V sin(1 10m 1kHz) R1 1 0 1k IEN 2 0 sin(1M 10U 1KHz) 2 Um mills é um milésimo de polegada. A distância entre dois pinos de um CI, por exemplo, é de 100 mills. R2 3 0 1k *Fonte de tensao auxiliar VAUX 3 2 dc 0 *Analise .control tran 0.01ms 3ms plot v(1) -v(2) plot i(ven) -i(vaux) .endc .end A senóide é definida por: sin(VO VA F TD D), o que gera um sinal igual a VO antes do atraso TD e a equação abaixo após TD: VO + VAe−D(t−TD) sin(2πF(t − TD)) Os dois últimos parâmetros podem ser omitidos e assumem então o valor zero, como mostra o exemplo. Além das senóides, note o uso de uma fonte de tensão auxiliar com valor zero (ou seja, equivalente a um curto) para medida da corrente. Isto é necessário pois o SPICE só consegue mostrar correntes que passam por fontes de tensão. Note ainda o sinal de menos nos comandos plot, indicando que podemos fazer operações matemáticas nas variáveis. 3 Pulso O exemplo 3 mostra o uso de um capacitor no SPICE e como descrever uma onda quadrada e triangular através do pulse. O capacitor é identificado pela linha que começa com a letra c. Caso fosse necessário um indutor, a letra equivalente seria l. Exemplo 3 - Carga e Descarga RC. *Descricao do circuito VENA 1 0 pulse(0 1 0 1n 1n 0.5m 1m) R1 1 2 1k C1 2 0 100nf VENB 3 0 pulse(0 1 0 499n 499n 1n 1m) R2 3 0 1k *Analise .control tran 0.01ms 3ms plot v(1) v(3) plot v(1) v(2) plot v(1,2) .endc .end Uma onda quadrada no SPICE é definida por: pulse(V1 V2 delay ts td larg periodo) Onde os parâmetros podem ser visualizados na figura abaixo. Note que fazendo ts e td quase igual a periodo e larg muito pequeno, se descreve uma onda triangular. delay ts larg td V2 V1 periodo Uma última novidade neste código SPICE é a linha plot v(1,2), que pega a tensão entre os nós 1 e 2 do circuito. Todos os outros gráficos são feitos considerando o nó 0 como referência. Aliás, os cálculos do SPICE são feitos considerando o nó 0 como referência, portanto é obrigatório que todo circuito SPICE tenha um nó 0. 4 Modelos Os elementos ativos (ou seja, diodos e transistores) são descritos no SPICE através de modelos. No exemplo abaixo é feita a simulação de um diodo. Exemplo 4 - Curva de um diodo *Descricao do circuito VEN 1 0 0V D1 2 0 D1N4007 *Fonte de tensao auxliar VAUX 1 2 dc 0 .model D1N4007 D(IS=2.55e-9 +N=1.75 VJ=0.75 BV=100 IBV=9.86e-5) *Analise .control dc ven 0.01 0.75 0.01 plot i(vaux) plot log(i(vaux)) .endc .end Note que um diodo é identificado no SPICE pela letra d. Da mesma forma transistores bipolares tem usam a letra q, MOSFETs usam d e JFETs usam f. Ao final da pinagem, indica-se o nome do modelo. No exemplo 4, mostra-se o modelo do diodo 1N4007. O comando do SPICE é o .model, seguido do nome do modelo (que é o mesmo usado quando se chama o elemento) e do tipo do modelo (D para diodo, NPN ou PNP para TBJ, NJF ou PJF para JFETs e NMOS ou PMOS para MOSFETs) com os parâmetros daquele dispositivo. No exemplo o diodo é descrito com apenas 5 parâmetros, mas o modelo completo do diodo tem 15 parâmetros, todos os que não são identificados recebem valores padrões. Ainda no modelo, note que é possı́vel continuar uma linha acrescentando um + no inı́cio da linha seguinte. Além disto, o SPICE permite que se incorpore um arquivo ao código utilizando o comando .include. Isto pode ser utilizado para incluir uma biblioteca com modelos de dispositivos, tal como a modelos.lib, presente na página da disciplina. Exemplo 5 - Transiente dos diodos .include modelos.lib *Descricao do circuito VEN1 1 0 0V pulse 0 5 0 1n 1n .1u .3u R1 2 4 1k D1 4 0 D1N4001 R2 3 5 1k D2 5 0 D1N4148 *Fontes de tensao auxiliar VAUX1 1 2 dc 0 VAUX2 1 3 dc 0 *Analise .control tran .01n .2u plot v(4) v(5) plot i(vaux1) i(vaux2) .endc .end não é necessário colocar o modelo do diodo no código quando se inclue um arquivo de modelos, logo o código fica mais legı́vel. 5 Amplificador Operacional e subcircuitos. Um dispositivo mais complexo que será utilizado na disciplina é o amplificador operacional. Não existe um modelo SPICE pronto para amplificadores operacionais, até porque existem muitas formas diferentes de implementar um. No caso em questão, para simular um LM324 utiliza-se um subcircuito. Antes, para entender o que é um subcircuito, podemos implementar um multiplicador de tensão, descrevendo um duplicador de tensão e replicando esta descrição usando subcircuitos. Exemplo 6 - Multiplicador de tensao .include modelos.lib *Subcircuito do duplicador .subckt dup 1 2 3 4 C1 1 3 100nf C2 2 4 100nf D1 2 3 D1N4148 D2 3 4 D1N4148 .ends *Descricao X1 1 0 2 3 X2 2 3 4 5 X3 4 5 6 7 Ven 1 0 0V *Fontes de do circuito dup dup dup sin(0 10 60Hz) tensao auxiliar *Analise .control tran .1m 1 plot v(1) v(3) v(5) v(7) .endc .end Para entender melhor este circuito, a figura abaixo mostra um diagrama esquemático dele. O subcircuito é definido pelos comandos .subckt e 1 C1 dup D2 D1 2 C2 2 1 Ven 0 3 X1 4 4 X2 3 6 X3 5 .ends. Entre estes dois comandos está a descrição do subcircuito, que é um código SPICE normal. O comando .subckt recebe o nome do subcircuito que está sendo descrito e a lista dos nós deste circuito que serão pinos. O subcircuito é chamado como um elemento começado pela letra X, seguido da relação de que nós do circuito estão ligados aos pinos e do nome do subcircuito utilizado O modelo do amplificador LM324 presente no arquivo modelos.lib é um subcircuito com cinco pinos: entrada não-inversor, entrada inversora, alimentação positiva, alimentação negativa e saı́da, nesta ordem. Para utilizá-lo basta chamar um subcircuito com estes 5 pinos 7 e com o nome LM324, vide o exemplo 7. Exemplo 7 - Oscilador com Amp-op .include modelos.lib *Descricao do circuito XAO 3 4 1 2 6 LM324 VCC 1 0 10 VEE 2 0 -10 R1 6 3 10k R2 3 0 1k R3 6 4 10k C1 4 0 100n *Fontes de tensao auxiliar *Analise .control tran .1u 1m plot v(4) v(6) .endc .end 6 Fila Elementos passivos • Resistor Rnome nó+ nó- valor • Capacitor C nome nó+ nó- valor <IC=tensão inicial> • Indutor Lnome nó+ nó- valor <IC=corrente inicial> Elementos Ativos • Diodo Dnome anodo catodo modelo • Transistor Bipolar Qnome coletor base emissor modelo <área> • Transistor JFET J nome dreno porta fonte modelo <área> • Transistor MOSFET M nome dreno porta fonte substrato modelo <L=comprimento W=largura> Fontes Independentes • Tensão V nome nó+ nó- onda <DC valor> <AC amplitude,fase> • Corrente I nome nó+ nó- onda <DC valor> <AC amplitude,fase> Onde onda pode ser apenas um valor constante (então não se usa DC) ou pode ser sin, pulse ou pwl. • Seno sin( offset amplitude frequência <atraso <amortecimento <fase> > >) • Pulso pulse( v1 v2 atraso subida descida largura perı́odo) • Interligação de pontos pwl( t1 v1 <t2 v2 <t3 v3 . . . > > >) Fontes controladas • Tensão ⇒ Tensão E nome nó+ nó- controle+ controle- ganho • Tensão ⇒ corrente Gnome nó+ nó- controle+ controle- ganho • Corrente ⇒ Tensão H nome nó+ nó- Vcontrole ganho • Corrente ⇒ Corrente F nome nó+ nó- Vcontrole ganho Análises • Varredura dc DC fonte inı́cio fim passo • Varredura em frequência AC {lin|dec|oct} passos inı́cio fim • Transiente tran passo fim <inı́cio <passo máximo> > <UIC > • Função de transferência tf saı́da entrada