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.
Engenharia é a arte de simplificar e estimar. Engineering is the art of simplifying and estimating.
Mostrando postagens com marcador engenharia. Mostrar todas as postagens
Mostrando postagens com marcador engenharia. Mostrar todas as postagens
segunda-feira, novembro 09, 2009
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
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:
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
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:
Marcadores:
engenharia,
matlab,
português
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
Suponha que tu tenhas o processo mostrado na figura 1.
A figura 2 mostra os comandos que tem que ser digitados e o resultado obtido:
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.
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).
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.
Suponha que tu tenhas o processo mostrado na figura 1.
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:
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.
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).
Marcadores:
engenharia,
matlab,
português
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:
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:
Marcadores:
eletrônica,
engenharia,
português
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).
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).
No lugar de todos aqueles blocos selecionados aparecerá um único, conforme mostrado na figura 3.
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.
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.
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:
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).
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).
No lugar de todos aqueles blocos selecionados aparecerá um único, conforme mostrado na figura 3.
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.
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.
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:
Marcadores:
engenharia,
matlab,
português
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.
O Matlab vai gerar o gráfico mostrado na figura 2.
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?
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.
E se a função for mais complexa ainda. Por exemplo, igual a mostrada na figura 5?
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.
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:
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.
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.O Matlab vai gerar o gráfico mostrado na figura 2.
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?
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.
E se a função for mais complexa ainda. Por exemplo, igual a mostrada na figura 5?
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.
- No command Window do Matlab, digite Simulink e tecle ENTER.
- Desenhar o circuito / planta para o qual se deseja traçar o Diagrama de Bode (conforme fizemos na figura 5).
- Clique com o botão direito do mouse sobre a entrada do sistema e selecione Linearization Points -> Input Point.
Aparecerá uma bolinha com uma setinha entrando nela em cima da linha de entrada do sistema. A figura 7 mostra o que estou falando.
- Clique com o botão direito do mouse sobre a saída do sistema e selecione Linearization Points -> Output Point.
Aparecerá uma bolinha com uma setinha saindo dela em cima da linha de saída do sistema. Veja a figura 9.
- Selecione Tools -> Control Design - Linear Analysis (veja a figura 10).
- Na janela que abrirá, selecione Bode Response Plot no combo box (figura 11).
- Clique no botão Linearize Mode (figura 12).
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:
- Programação em Matlab para Engenheiros - Stephen J. Chapman
- Matlab com Aplicações em Engenharia - Amos Gilat
- Matlab 7: Fundamentos - Elia Yathie Matsumoto
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.
Marcadores:
engenharia,
matlab,
português
Assinar:
Postagens (Atom)




































