terça-feira, 9 de dezembro de 2014

Prog. de Computadores I - Seg. Avaliação - Gabarito

Senhores alunos:

No link abaixo é possível baixar o gabarito da prova. 
O único item trabalhoso era o da intersecção (valia 1,5). 
Por ser trabalhoso, deveria ser feito após a resolução das outras questões!

Recuperação apenas para quem compareceu a avaliação ou entregou atestado:

DIA 15/12 com início às 8 horas e término às 11 h 30 min.


- Gabarito.


quarta-feira, 3 de dezembro de 2014

Exercícios de Preparação para a segunda avaliação de Sistemas de Controle

Srs alunos

  
O link abaixo dá acesso a lista de exercícios sobre Lugar das Raízes (Root Locus), Diagramas de Bode e Critério de Routh-Hurwitz.

Exercícios sobre estabilidade de Sistemas de Controle

E, no link abaixo a solução de todos exercícios da última lista.

 Solução dos Exercícios - Routh/ROOTLOCUS/Bode.

att

Villaça

domingo, 30 de novembro de 2014

segunda-feira, 24 de novembro de 2014

Sistemas de Controle - Scripts dos controladores

Senhores alunos:

Abaixo apresento os scripts Scilab para projeto de controladores PID pelo Método Analítico e dos controladores em avanço ou atraso de fase pelo Lugar das raízes.

Até amanhã.

Script PID:

s=%s;
ng = input("Entre com o numerador da FTMA da planta - polinômio em s: ")
dg = input("Entre com o denominador da FTMA da planta - polinômio em s:")
wg = input("Entre com a frequencia de cruzamento de ganho: ")
pm = input("Entre com a margem de fase: ")
ki = input("Entre com Ki: ")
ngc=horner(ng,%i*wg); dgc=horner(dg,%i*wg); g=ngc/dgc;
thetar=(pm-180)*3.141592/180;
ejtheta=cos(thetar)+%i*sin(thetar);
sol=(ejtheta/g)+%i*(ki/wg)
x=imag(sol);
r=real(sol);
kp=r;
kd=x/wg;
if ki~=0
    dk=s;
    nk=kd*s^2+ kp*s+ ki;
else dk=1; 
     nk=kd*s + kp;
end;
GC=syslin('c',nk,dk);

print(%io(2),GC,"Compensador");

Script Avanço ou atraso - Root Locus:

s=%s;
z = input("Entre com o amortecimento desejado : ")
wn = input("Entre com a frequencia natural desejada:")
ng = input("Entre com o numerador de G- polinomio em s: ")
dg = input("Entre com denominador de G - polinomio em s: ")
H = input("Entre com H: ")
KC=input("Entre com o ganho KC: ")
s1 = -z*wn + %i*wn*sqrt(1-z^2);
ms=abs(s1);
ts=atan(imag(s1),real(s1));
ns1=horner(ng*H,s1); ds1=horner(dg,s1); g=ns1/ds1;
mg=abs(g);
tg=atan(imag(g),real(g));
tauz=(sin(ts)-KC*mg*sin(tg-ts))/(KC*mg*ms*sin(tg));
taup=-(KC*mg*sin(ts)+sin(tg+ts))/(ms*sin(tg));
nk=KC*(tauz*s+1);
dk=taup*s+1;
GC=syslin('c',nk,dk);
print(%io(2),s1,"s1");
print(%io(2),ms,"modulo de s1");
print(%io(2),ts*180/%pi,"fase de s1");
print(%io(2),mg,"modulo de G");
print(%io(2),tg*180/%pi,"fase de G");
print(%io(2),GC,"Compensador")
print(%io(2),tauz,"tauz");
print(%io(2),taup,"tauz");
print(%io(2),GC,"Compensador");
G=syslin('c',ng,dg);
G1=G*GC;
FTMF = G1/.H;
t=linspace(0,0.005,1000);
y=csim('step',t,FTMF);
plot2d(t,2.5*y);
xgrid();


terça-feira, 18 de novembro de 2014

Introdução a Programação em Linguagem C - Aula de 19/11

Senhores alunos:


Cliquem no link para acessar o material da aula de amanhã.

Até a quarta.

Programação de Computadores I - Aula de 24/11 - Arquivos

Senhores alunos:


Encontram-se disponíveis neste link as notas referentes a nossa próxima aula.
Conforme tratado com os presentes no início da aula passada, nossa próxima aula inicia às 7h e 30min.
Boa leitura!

segunda-feira, 17 de novembro de 2014

Circuitos Elétricos - FIltros Passivos: Gabarito das listas de exercícios.

Senhores alunos:

Respostas dos exercícios propostos sobre filtros passivos do livro texto:

14.47 - fc = 796 kHz

14.48 -                                    1
            |G| = ------------------------------------------------
                     sqrt [ (1 - w^2 * LC) ^2   + (wL/R)^2 ]

           Se w = 0 --> G = 1
           Se  w = 1 / sqrt(LC) --> 0 <G < 1
           Se w = infinito --> G = 0

           Logo o Filtro é Passa Baixas

14.49 - 0,2 rad/s , -14 dB e -84,3 graus

14.50 - Filtro PA e fc = 318,2 Hz

14.51 - R = 1200 ohms (Valor comercial)

14.52 - R = 27k (valor comercial)

14.53 - R = 18k , L = 2,9 H e Q = 10,5

14.54 - Considerando a configuração RLC série:
             B = 0,5 rad/s
             Com C= 10 mF --> L = 1H
             R = 0.5 ohms

14.55 - 1,56 kHz< f < 1,62 kHz , Q = 25

14.56 - Considerar na demonstração a configuração RLC serie

14.57-  (a) wo = 1 rad/s e B = 3 rad/s
           (b) wo = 1 rad/s e B = 3 rad/s   

14.58 -  fo = 79,6 kHz
            fci = 78 kHz
            fcs = 81,2 kHz
            Q = 250

14.59 - B - 2400 rad/s e wo = 15811 rad/s

Respostas dos exercícios propostos sobre filtros passivos - 6 questões:

1) Para R1 = 100k:
 C1 = 10 nF, C2 = 2nF, , R2 = 10k,

2) Q = 0,29

3) f0 = 2 kHz
    Q = 0,67
Para L = 10mH --> C= 0,68uF e R =180 (Comerciais)

4) Correção - Ruido de 60 Hz!

   FPA : R = 3,9 k
           C = 68 nF
  Redução - 1,32dB

5) FPB: fc = 7860,9 Hz
           C = 1,2 nF
           R = 16,87 k -> 18k

6) Vo                            1                                     
    Vi     ( 1 + R2 + wc1 )   +   j ( w  -   wc1 )
                    R1    wc2             wc2      w    

terça-feira, 11 de novembro de 2014

Sistema de Controle - Gabarito da Segunda Parte da Primeira Avaliação

Senhores Alunos

O gabarito das questões teóricas encontra-se abaixo. O Gabarito das questões práticas neste link.

1) Tempo de subida é o tempo que a resposta a uma entrada em degrau leva para excursionar de 10 a 90% do seu valor final.

2) Quando o amortecimento é razoavelmente maior do que 1.

3) a) O denominador apresenta o termo s^2.
    b) Degrau e rampa.

Boa Semana

segunda-feira, 10 de novembro de 2014

Prog. Computadores I - Solução da Tarefa I no Scilab

Senhores alunos:

Em função das tarefas entregues não estarem bem adaptadas ao ambiente Scilab, apresento, no link abaixo, a solução da tarefa.

Script Scilab - Tarefa I.

Boa semana!


domingo, 9 de novembro de 2014

sexta-feira, 31 de outubro de 2014

Prova de Recuperação de Programação de Computadores I

Senhores Alunos

Lembro que na próxima segunda-feira, dia 3 de novembro, faremos a nossa prova de recuperação das 7h 30 min às 9h 20 min.

Bom final de semana a todos!

quarta-feira, 22 de outubro de 2014

sexta-feira, 17 de outubro de 2014

Eleições


Depois do debate de ontem no SBT, ou melhor do "bate boca", não posso deixar de dar razão aos anarquistas, que lutam por um mundo sem governos, ou melhor sem "desgovernos":


"Mais importante do que tirar os ratos do navio é afundar o navio, para que este não possa ser ocupado por ratos novos".

Bom final de semana!


quarta-feira, 15 de outubro de 2014

Programação de Computadores I - Aulas de 20/10 e 03/11

Senhores alunos:

Encontram-se no link abaixo, as notas de nossas próximas aulas.

Subprogramas e ponteiros.

Bom final de semana!

-----------------------------------------------------------------

Keywords: pointers, subprograms, C programming, Scilab.

terça-feira, 14 de outubro de 2014

Programação de Computadores - Solução exercício sobre estruturas

Senhores alunos:

Segue no final do post, o código fonte de uma solução para o exercício:

Criar uma estrutura para armazenar informação sobre alunos de uma disciplina:

  • Nome do aluno
  • Número de matrícula
  • Notas de três alunos
  • Média das notas

Você usará um vetor (matriz) de estruturas, em que o número de elementos é o número alunos.

Por enquanto, fazer a entrada de dados pelo teclado (veremos, mais à frente, como importá-los de um arquivo):


  • A média deve ser calculada
  • O programa deve informar os alunos aprovados (média final > = 6).
  • Mostrar na tela, também, os alunos em ordem de melhor média.
Até semana que vem!

Keywords - struct, sort, C programming.


--------------------------------------------------------------------------------

#include <stdio.h>
struct turma {
            char nome[20];
            char mat[7];
            unsigned short int n1, n2, n3;
            float media;
            };
int main()
{
struct turma alunos[5],temp;
    char controle;
    int j=0,k,i;
    do {
fflush(stdin);
printf("Entre com o nome do aluno\n");
scanf("%[^\n]s",alunos[j].nome);
printf("Entre com o numero de matric. com 6 caracteres\n");
scanf("%s",alunos[j].mat);
printf("Entre com as 3 notas do aluno separadas por espaco\n");
scanf("%hu %hu %hu",&alunos[j].n1,&alunos[j].n2,&alunos[j].n3);
alunos[j].media = (alunos[j].n1 + alunos[j].n2 +alunos[j].n3)/3.0;
j++;
if(j==5)
{
printf("TURMA COMPLETA\n");
break;
}
printf("Digite <q> + <ENTER> para sair ou qquer tecla + <ENTER> para novo aluno\n");
fflush(stdin);
controle=getchar();
    } while(controle!='q'&&controle!='Q');
    //Imprime alunos com a media
printf("Alunos Aprovados\t Media\n");
for(k=0;k<j;k++)
{
if(alunos[k].media>=6)
printf("%s\t\t\t %.2f\n",alunos[k].nome,alunos[k].media);
}
//Ordenação
for(k=0;k<j;k++)
for(i=0;i<j-k-1;i++) // A cada elemento ordenado, ao executar o for interno
{ // necessito uma iteração a menos por isso "j-k"
// o menos "1" se deve ao fato de compararmos [i] com [i+1]
if(alunos[i].media<alunos[i+1].media)
{
temp = alunos[i];
alunos[i] = alunos[i+1];
alunos[i+1]=temp;
}
}
printf("\n\nAlunos\t\t\t Media\n");
for(k=0;k<j;k++)
{
        printf("%s\t\t\t %.2f\n",alunos[k].nome,alunos[k].media);
}
    return 0;
}

domingo, 12 de outubro de 2014

quinta-feira, 9 de outubro de 2014

Sistemas de Controle - Tarefa II

Senhores alunos:

A partir do link abaixo, faça o download da tarefa sobre "Resposta transitória e erros em regime permanente".

Tarefa II.

Até amanhã!

Circuitos Elétricos III - Lista de exercícios: ressonância e função de transferência.

Senhores alunos:

Cliquem aqui para baixar uma lista com exercícios sobre Função de Transferência selecionados a partir do livro texto (SADIKU) e  aqui para baixar uma lista com exercícios sobre Ressonância selecionados a partir do livro texto (SADIKU) e de EDMINISTER, Joseph. Circuitos Elétricos. Rio de Janeiro: McGraw-Hill do Brasil, 1971.


Até amanhã!

quarta-feira, 8 de outubro de 2014

Lista de Exercícios - Sistemas de Controle

Senhores Alunos:


A partir do link abaixo é possível acessar a lista complementar sobre resposta transitória e erros em regime permanente.
Lista complementar - segunda avaliação.

**** Correção das Respostas ****

**** Questão 2 (a): ess =0   ****

**** Questão 4: Kv = 1,667. ****

***************************** 

Até breve!

domingo, 5 de outubro de 2014

Programação de Computadores I - aula de 6/10

Senhores alunos:

As notas relativas a nossa próxima aula podem ser lidas no link abaixo.

Incluo neste post a primeira tarefa que deve ser entregue por correio eletrônico em 16/10.

Até amanhã!

Keywords: arrays, matrices , composite data types, C programming language, Scilab

quarta-feira, 24 de setembro de 2014

Introdução a Programação C - Aula de 24/09

Senhores alunos:


Segue o link para acessar o material da nossa aula de hoje:
  • Classes de Armazenamento;
  • O Pré-processador C e as macros.

Até a noite!

terça-feira, 23 de setembro de 2014

Programação de Computadores I - Guia de referência rápida para o Scilab

Senhores alunos:

Estou disponibilizando uma primeira versão do "Cartão de referência do Scilab".

Peço que leiam e verifiquem possíveis erros.

Boa semana!


Keywords: Scilab, reference card.

sexta-feira, 19 de setembro de 2014

Programação de Computadores I - Aula de 22/09

Senhores alunos:


As notas relativas a nossa próxima aula podem ser lidas no link abaixo.

Incluo neste post exercícios que podem ser utilizados em uma avaliação escrita.

Até a próxima postagem!

Keywords: select, case, C programming language, Fortran, Scilab.

segunda-feira, 15 de setembro de 2014

Lista de exercícios sobre transitórios de segunda ordem

Senhores Alunos:



Disponibilizo, a lista de exercícios para preparação para a avaliação dos transitórios de segunda ordem. Apenas  o primeiro exercício não foi selecionado do livro texto.

A propósito, no primeiro exercício, o primeiro gráfico representa a corrente no indutor em um circuito RL série, medida em ampères. O segundo gráfico representa a tensão no capacitor de um circuito RLC série, medida em volts.

Keywords:  transient response, second-order, parallel RLC circuit, series RLC circuits, exercises.

Respostas:

1. R = 5 Ohms
    L = 0,32 H
    C = 3,7 mF
    Valores aproximados.

8.12 a) C > 6 mF  b) C = 6 mF c) C < 6 mF
8.13 R > 120 Ohms
8.14 v = -1,33 (e^-0,5t - e^-0,2t)
8.15 L = 25H, C= 0,2 mF e R = 750 Ohms
8.22 C = 0,05 uF
8.23 C = 40 mF
8.24 i = e^-10t ( 4 cos 19,36 t + 1,05 sen 19,36 t)
8.30 C = 150 nF
8.31 VL(0+) = 80
8.36 v = 35 e^-0,8t (15 sen 0,6t + 20 sen 0,6 t)
        i = 5 e^-0,8t sen 0,6t
8.43 R = 8 ohms e C= 2,075 mF
8.47 v = 200 t e^-10t
8.53 i'' + (5/4) i' + 100 i = 600

Transitórios RLC de segunda ordem - Script com Scilab

Senhores Alunos:

Segue, abaixo, o script Scilab completo para o cálculo das constantes da solução das equações diferenciais e o traçado dos gráfico da corrente e da tensão dos transitórios RLC série e paralelo de segunda ordem.


Bom uso!

Keywords: transient response, second-order, parallel RLC circuit, series RLC circuit, Scilab.

-----------------------------------------------------------------------

clc;
clear ;
xdel(winsid());
disp('Avaliação da Corrente no transitorio RLC de 2a ordem');
Tipo = input('Informe <1> para circuito serie <2> para paralelo: ')
disp('Entrada de Dados');
R = input('Valor de R =');
L = input('Valor de L =');
C = input('Valor de C =');
I0 = input('Valor de I0 =');
V0 = input('Valor de V0 =');
w0 = 1/(sqrt(L*C));
if Tipo==1
    Vs = input('Valor de Vs =');
    dI0 = -(-Vs+R*I0+V0)/L;
    dV0 = I0/C
    alpha = R/(2*L);
else 
    Is = input('Valor de Is =');
    dV0 = -(-Is+I0+V0/R)/C;
    dI0 = V0/L;
    alpha = 1/(2*R*C);
end     
printf('di(0)/dt = %.2f, alpha = %.2f, w0 = %.2f\n',dI0,alpha,w0); 
printf('dv(0)/dt = %.2f\n',dV0); 
if Tipo==1
    if alpha<w0
        disp('Caso subamortecido');
        wd = sqrt(w0^2-alpha^2);
        A1 = I0;
        A2 = (dI0 + alpha*A1)/wd;
        A3 = V0 - Vs;
        A4 = (dV0 + alpha*A3)/wd;
        printf('s1 = %.2f + j%.2f, s2 = %.2f - j%.2f\n',-alpha,wd,-alpha,wd);
        printf('wd = %.2f\n',wd);
        t = 0:0.001:5/alpha;
        i = exp(-alpha*t).*(A1*cos(wd*t) + A2*sin(wd*t));
        v = exp(-alpha*t).*(A3*cos(wd*t) + A4*sin(wd*t)) + Vs;
    elseif alpha>w0
        disp('Caso superamortecido');
        delta = sqrt(alpha^2-w0^2);
        s1 = -alpha + delta;
        s2 = -alpha - delta;
        A2 = (s1*I0 -dI0)/(2*delta);
        A1 = I0 - A2;
        A4 = (s1*(V0-Vs)-dV0)/(2*delta);
        A3 = V0 - Vs - A4;
        printf('s1 = %.2f, s2 = %.2f\n',s1,s2);
        tau = (1/s1)*(A1/A2); // pondera em relação as constantes
        t = 0:0.001:6*abs(tau);
        i = A1*exp(s1*t) + A2*exp(s2*t);
        v = A3*exp(s1*t) + A4*exp(s2*t) + Vs;
    else
        disp('Caso de amortecimento crítico');
        s = -alpha;
        A1 = I0;
        A2 = dI0 + alpha*A1;
        A3 = V0 - Vs;
        A4 = dV0 + alpha*A3;
        printf('s = %.2f\n',s);
        t = 0:0.001:5/alpha;
        i = (A1 + A2*t).*exp(s*t);
        v = (A3 + A4*t).*exp(s*t) + Vs;
    end
else  
    if alpha<w0
        disp('Caso subamortecido');
        wd = sqrt(w0^2-alpha^2);
        A3 = V0;
        A4 = (dV0 + alpha*A3)/wd;
        A1 = I0 - Is;
        A2 = (dI0 + alpha*A1)/wd;
        printf('s1 = %.2f + j%.2f, s2 = %.2f - j%.2f\n',-alpha,wd,-alpha,wd);
        printf('wd = %.2f\n',wd);
        t = 0:0.001:5/alpha;
        v = exp(-alpha*t).*(A3*cos(wd*t) + A4*sin(wd*t));
        i = exp(-alpha*t).*(A1*cos(wd*t) + A2*sin(wd*t)) + Is;
    elseif alpha>w0
        disp('Caso superamortecido');
        delta = sqrt(alpha^2-w0^2);
        s1 = -alpha + delta;
        s2 = -alpha - delta;
        A4 = (s1*V0 -dV0)/(2*delta);
        A3 = V0 - A4;
        A2 = (s1*(I0-Is)-dI0)/(2*delta);
        A1 = I0 - Is - A2;
        printf('s1 = %.2f, s2 = %.2f\n',s1,s2);
        tau = (1/s1)*(A1/A2);// pondera em relação as constantes
        t = 0:0.001:6*abs(tau);
        v = A3*exp(s1*t) + A4*exp(s2*t);
        i = A1*exp(s1*t) + A2*exp(s2*t) + Is;
    else
        disp('Caso de amortecimento crítico');
        s = -alpha;
        A3 = V0;
        A4 = dV0 + alpha*A3;
        A1 = I0 - Is;
        A2 = dI0 + alpha*A1;
        printf('s = %.2f\n',s);
        t = 0:0.001:5/alpha;
        v = (A3 + A4*t).*exp(s*t);
        i = (A1 + A2*t).*exp(s*t) + Is;
    end
end 
printf('Constantes ED corrente, A1 = %.2f, A2 = %.2f\n',A1,A2);
printf('Constantes ED tensao, A1 = %.2f, A2 = %.2f\n',A3,A4);
subplot(211);
plot(t,i)
xlabel('Tempo (s)');
ylabel('Corrente (A)');
xgrid;
subplot(212);
plot(t,v)
xlabel('Tempo (s)');
ylabel('Tensão (A)');
xgrid;

Gabarito exercícios de controle

Senhores alunos:

Neste link é possível baixar o gabarito da lista de exercícios disponibilizada para preparação para a primeira avaliação.

Até amanhã.




quinta-feira, 11 de setembro de 2014

quarta-feira, 10 de setembro de 2014

Programação de Computadores I - Aula de 15/09

Senhores alunos:


As notas relativas a nossa próxima aula podem ser lidas no link abaixo.

Estruturas de controle de fluxo por laço - parte ii.

Até a próxima postagem!

Keywords: flow control structures, C programming language, Fortran, Scilab.

quinta-feira, 4 de setembro de 2014

Programação de Computadores I - Aula de 08/09

Senhores alunos:


As notas relativas a nossa próxima aula podem ser lidas no link abaixo.

Estruturas de controle de fluxo por laço.

Até a próxima postagem!

Keywords: flow control structures, C programming language, Fortran, Scilab.