Mostrando postagens com marcador engenharia. Mostrar todas as postagens
Mostrando postagens com marcador engenharia. Mostrar todas as postagens

segunda-feira, novembro 09, 2009

Sintonia de Controladores

Ficar fazendo continhas de taberneiro é uma chatice muito grande. Além  disso estamos sujeitos, por falta de atenção, a cometer erros.

Então resolvi fazer uma planilha em que entramos com os parâmetros e as contas são feitas automagicamente.

Ela encontra-se na seção Arquivos Úteis, no link Sintonia de Controladores.

Qualquer erro, por favor, informem-me.

domingo, novembro 01, 2009

Como plotar saída de funções de espaço-de-estados no Matlab

Suponha que tenhamos que determinar a forma de onda, o sobre-sinal, os tempos de subida e de estabilização bem como o valor de regime de um processo.

Suponha ainda que, ao invés da função de transferência G(s), foram fornecidas as equações de Espaço-de-Estados. Como fazer isso, sem contas nem complicações?

Faremos isso por meio do bloco State-Space do Simulink. Este bloco espera o fornecimento de quatro matrizes (A, B, C e D), que satisfaçam as equações de Espaço-de-Estados, conforme mostrado abaixo.


As equações de Espaço-de-Estados são

e

onde
x é o vetor de estado (n-vetor)
u é o vetor de controle (r-vetor)
y é o vetor de saída do sistema (m-vetor)
A é a matriz n x m
B  é a matriz n x r
C é a matriz m x n
D é a matriz m x r

Tudo o que precisamos fazer é determinar as quatro matrizes e usar o bloco State-Space. Complicado? Nem um pouco.

Vou mostrar, por meio de um exemplo, como fazer.

Suponha que as equações de Espaço-de-Estados que nós temos são

Podemos reescrever essas equações de modo a deixá-las em um forma matricial. Veja:

 
Por inspeção, obtemos as quatro matrizes:

  
 
 
Agora, crie um novo modelo do Simulink e insira o bloco State-Space (que se encontra em Simulink->Continuous) e conecte o bloco Step e o Scope, conforme mostrado na figura abaixo.


As matrizes devem ser escritas com a sintaxe do matlab. Assim, temos que

A = [0 1; -4 -2]
B = [0;4]
C = [1 0]
D = [0;0]

Como todos os elementos da matriz D são nulos, ela pode ser escrita simplesmente como

D = 0

Dê um clique duplo no bloco State-Space e insira os valores de A, B, C e D, conforme mostrado na figura abaixo.



Pronto. Agora é só simular, obter o gráfico da respsota do sistema e de lá obter os valores desejados. O gŕafico para o sistema do exemplo é visto a seguir.


Recomendo os três livros a seguir:

sábado, outubro 10, 2009

Como obter o controlador digital quando já temos o analógico usando Matlab

Suponha que tu tenhas a função de transferência de um controlador analógico e queiras obter a função de transferência equivalente para um controlador digital.

Como fazer isso de modo fácil? Simples. O matlab dispõe de uma função chamada c2dm.

No command window do matlab digite o comando
[numDz, DenDz] = c2dm(num, den, Ts, 'zoh')
onde
  • numDz é o numerador do sistema discreto que se deseja obter
  • denDz é o denominador do sistema discreto que se deseja obter
  • num é o numerador do sistema contínuo que se deseja converter para sistema discreto
  • den é o numerador do sistema contínuo que se deseja converter para sistema discreto
  • Ts é o tempo de amostragem, em segundos.
  • 'zoh' indica que deseja-se o equivalente da função contínua utilizando-se a operação Zero Order Hold.
Vou mostrar com um exemplo como utilizar essa função para realizar a conversão.

Suponha que tu tenhas o processo mostrado na figura 1.

Figura 1 - exemplo de processo com controlador analógico
num e den são obtidos diretamente do nosso controlador analógico:
num = [4 1]
den = [4 0]
Vamos supor que queremos que o tempo de amostragem seja 0.25s. Logo, temos que Ts = 0.25s

A figura 2 mostra os comandos que tem que ser digitados e o resultado obtido:

Figura 2 - comando c2dm executado e o resultado

Agora nós usamos o bloco Discrete Transfer Function e numDz e denDz obtidos para escrevermos a função de transferência discreta do controlador digital. Este controlador substituirá o controlador analógico, conforme mostrado na figura 3.

Picture 3 - Processo usando o controlador digital

Fácil, não é?

Para finalizar, a figura 4 mostra a saída produzida pelos reguladores analógico e digital (em amarelo e lilás, respectivamente).

Picture 4 - saída produzida pelos reguladores analógico e digital

sábado, agosto 22, 2009

Microcontroladores ARM de graça

Há 3 semanas atrás eu fiquei sabendo, através do blog do Jê, que a NXP estava distribuindo gratuitamente amostras dos microcontroladores LPC1766, LPC2478, LPC3130 e LPC3250.

Eu fui no site da NXP e fiz a solicitação das amostras. Elas chegaram no dia 18/08/2009.

Não vieram os 4, conforme eu havia solicitado. Apenas o LPC1766. De qualquer modo estou muito satisfeito e logo devo começar a usá-lo.

Se tu gostas de eletrônica e tens interesse em microcontroladores, aproveite que até o momento em que escrevia este post a campanha estava no ar:

segunda-feira, abril 06, 2009

Organize os seus modelos no Simulink

No post Como gerar Diagramas de Bode sem fazer contas no MATLAB eu mostrei uma das inúmeras facilidades que esta ferramenta nos fornece. Neste, vou mostrar como podes tornar teu modelo mais organizado com o uso de blocos.

Não fui claro? Então deixe-me explicar melhor.

Durante o desenvolvimento dos nossos modelos no Simulink, junto com o progresso da modelagem ocorre o progresso na bagunça.

Por exemplo, a figura 1 ilustra um modelo de tanque com medidor de volume desperdiçado (líquido que vazou).

Figura 1 - Diagrama com múltiplos blocos

Este diagrama, apesar de pequeno, mostra vários blocos (8, para ser mais exato). Como poderíamos tornar este modelo mais legível?

Simples. Vamos agrupar os blocos que correspondem a uma única função em uma única caixa.

No exemplo acima, os blocos Integrador, somador, Volume Total do Tanque e o bloco limitador formam, na realidade, um totalizador de vazão. Então, nada mais natural que representá-los como um único equipamento.

Para fazer isso, deves proceder assim:

1 - selecione os blocos que queres transformar um uma única caixa
2 - clique com o botão direito do mouse sobre qualquer um dos componentes selecionados. Abrirá um popup com várias ações.
3 - Selecione a opção Create Subsystem (ver figura 2).

Figura 2 - Selecionando objetos para gerar o bloco equivalente.

No lugar de todos aqueles blocos selecionados aparecerá um único, conforme mostrado na figura 3.

Figura 3 - Bloco equivalente após a criação do subsistema.

Na figura 3 podemos ver que a entrada e a saída do bloco chamam-se, respectivamente, In1 e Out1 (se houvesse mais de uma entrada e/ou saída, teríamos In2, In3,... e Out2, Out3, ...).

Ok. Para tornar mais intuitivo o que este bloco equivalente representa, vamos fazer mais algumas modificações no modelo:

1 - renomearemos o bloco de Subsystem para algo que represente melhor o que ele faz. Para isso, clique sobre o texto Subsystem e o substitua por Totalizador de Vazão.

2 - In1 e Out1 não dizem muita coisa. Vamos renomeá-los para algo que tenha algum significado para nós. Dê um duplo clique sobre o bloco que acabamos de criar. Abrirá uma janela mostrando seu interior, ou seja, os blocos que o constituem. A figura 4 ilustra o que acabei de dizer.

Figura 4 - Vista explodida do bloco Totalizador de Vazão.

Agora é só clicar sobre os textos In1 e Out1 e substituí-los por outro texto do teu interesse. Eu vou renomear In1 para Qe (vazão de entrada) e Out1 para Volume_Vazamento. A figura 5 mostra o resultado final.

Figura 5 - Modelo simplificado

Para um projeto pequeno como o demostrado neste artigo, o trabalho parece não valer a pena. mas acredite, conforme tu fores melhorando teu modelo, mais e mais blocos surgirão. Aí sim verás a necessidade e a utilidade desta técnica.

O melhor de tudo é que podes continuar com este processo indefinidamente, fazendo com que os blocos gerados sejam agrupados em outros blocos, reduzindo ainda mais o circuito.

Do mesmo modo que no post Como gerar Diagramas de Bode sem fazer contas no MATLAB, recomendo que leias pelo menos um dos livros abaixo:

quarta-feira, março 25, 2009

Como gerar Diagramas de Bode sem fazer contas no MATLAB.

Suponha que você precise gerar os Diagramas de Bode para uma função qualquer. Traça-los na mão é muito trabalhoso, chato e sujeito a erros. Existe um modo mais fácil de fazer isso?

Claro que existe. Tu podes usar o Matlab. O Matlab possui algumas funções que traçam os diagramas de margem e fase. Tu só tens que fornecer a função de transferência.

Por exemplo, se a tua função de transferência for

tu podes usar a função Margin(), igual mostrado na figura 1 abaixo.

Figura 1 - Executando a função Margin

O Matlab vai gerar o gráfico mostrado na figura 2.

Figura 2 - Resultado da função Margin

Legal, não é? Mas e se a função de transferência for mais complexa? Se ela for composta por duas ou mais funções? Por exemplo a mostrada na figura 3?

Figura 3 - Função mais complexa para a qual se deseja traçar o Diagrama de Bode

Simples. Tu podes achar a função equivalente, conforme mostrado na figura 4. Daí nós simplesmente chamamos a função Margin passando a função equivalente, igual fizemos no primeiro exemplo.

Figura 4 - Função equivalente para a qual se deseja traçar o Diagrama de Bode

E se a função for mais complexa ainda. Por exemplo, igual a mostrada na figura 5?

Figura 5 - Exemplo de função mais complexa

Simples. Podemos achar a função equivalente dela, igual fizemos no exemplo anterior.

O problema com essa abordagem é que, além de trabalhosa, demorada e sujeita a erros, nem sempre é viável acharmos a função equivalente "na unha".

Devemos deixar o Matlab trabalhar para nós. Como? Simples (irritante esse negócio de ficar falando simples toda hora, não é?). Usaremos a ferramenta do Matlab chamada Simulink.

Os passos são sempre os mesmos, não importa a complexidade do circuito.

Suponha que queremos traçar o Diagrama de Bode para o circuito mostrado na figura 5.

  1. No command Window do Matlab, digite Simulink e tecle ENTER.

  2. Desenhar o circuito / planta para o qual se deseja traçar o Diagrama de Bode (conforme fizemos na figura 5).

  3. Clique com o botão direito do mouse sobre a entrada do sistema e selecione Linearization Points -> Input Point.

    Figura 6 - Selecionando o ponto de entrada do circuito

    Aparecerá uma bolinha com uma setinha entrando nela em cima da linha de entrada do sistema. A figura 7 mostra o que estou falando.

    Figura 7 - Seta vermelha mostra a entrada selecionada

  4. Clique com o botão direito do mouse sobre a saída do sistema e selecione Linearization Points -> Output Point.

    Figura 8 - Selecionando o ponto de saída do circuito

    Aparecerá uma bolinha com uma setinha saindo dela em cima da linha de saída do sistema. Veja a figura 9.

    Figura 9 - Seta vermelha mostra a saída selecionada

  5. Selecione Tools -> Control Design - Linear Analysis (veja a figura 10).

    Figura 10 - Selecionando a análise linear.

  6. Na janela que abrirá, selecione Bode Response Plot no combo box (figura 11).

    Figura 11 - Selecionada a análise Bode Response Plot

  7. Clique no botão Linearize Mode (figura 12).

    Figura 12 - Selecionar o botão de execução da análise linear.
Pronto. O Matlab irá gerar o Diagrama de Bode para ti. A figura 13 mostra o resultado.

A partir de agora, tu nunca mais vais precisar resolver na mão as equações. Este método é útil para outros tipos de análise, como o Diagrama de Nyquist, por exemplo.

O Matlab é uma excelente ferramenta. E, como toda ferramenta, para que possamos aproveitá-la ao máximo, devemos conhecê-la bem.

Recomendo os três livros a seguir:
Não se impressione com as palavras Engenheiros / Engenharia nos títulos. Tu não precisas ser nem engenheiro nem estudante de engenharia para usá-lo.

Tudo que eles ensinam servem para todos que precisem usar o Matlab. Escolha quantos quiser, compre-os e estude-os com afinco. Valerá a pena.

Figura 13 - Diagramas de Bode de Margem e Fase