Você está na página 1de 134

Curso de Arduino Aplicado

Everson Mattos, Me. Eng.


Objetivos

1. Escrever programas em C e testá-los na plataforma


Arduino;
2. Instalar e compilar aplicativos para o Arduino com
Atmel Studio;
3. Programar algoritmo de controle digital;
4. Entender o processo básico de modelagem e
controle de plantas não lineares (conversores CC-
CC)
Ementa
– Modelagem básica de um conversores CC-CC (boost);
– Modelo médio por espaço de estados;
– Validação do modelo usando Matlab e PSIM;
– Controle digital básico;
– Uso do MatLab para projeto de controladores;
– Uso do PSIM para simulação, validação e teste do
controlador projetado;
– Implementação de controle digital usando o Arduino
uno;
– Testes práticos do sistema de controle projetado.
Índice

1. Introdução
2. Controladores
3. Projeto do Controlador com MatLab/PSIM
4. Modelo do Conversor Elevador (Boost)
5. Projeto de Controladores Digitais MatLab/PSIM
6. Implementação em Arduino UNO
Introdução
Atmega 328P
• Algumas arquiteturas para microcontroladores
são:
– CISC (Complex Instruction Set Computer)
– RISC (Reduced Instruction Set Computer)
– VLIW (Very-Long Instruction Word)

• AVR é um microcontrolador de arquitetura


RISC de 8-bit, desenvolvido pela Atmel em
1996.
Atmega 328P
Característica
da Arquitetura CISC RISC VLIW
Tamanho das variável Fixo, em geral Fixo
instruções 32bits
Registradores Alguns registradores Registradores de Registradores de uso
especiais uso geral geral
Foco do Hardware Sem pipeline Com um pipeline Com múltiplos
pipelines

Tamanho típico
das instruções,

Semântica das Complexa Normalmente Normalmente


instruções operações simples operações simples
Atmega 328P
Atmega 328P
• Vetor de interrupções.
Vetor Enderço Fonte Interrupção descrição ISR() Arduino

1 0x0000 RESET Reset

2 0x0002 INT0 Interrupção externa (PIN D2) INT0_vect

3 0x0004 INT1 Interrupção externa (PIN D3) INT1_vect

7 0x000C WDT Watchdog Time-out WDT_vect

14 0x001A TIMER1 OVF Timer/Counter1 overflow TIMER1_OVF_vect

22 0x002A ADC Conversão completa do ADC ADC_vect


Atmega 328P

• Instalar o Atmel Studio


• http://www.atmel.com/pt/br/tools/atmelstudio.aspx

Programar o ADC (Analog to Digital Conveter)

Programar o PWM (Pulse Width Modulation)


Atmega 328P

• Configurar o Atmelstudio
 No menu Tools,
 Escolher External Tools
Atmega 328P
• Configurar o Atmelstudio
 Clicar em Add;
 Definir um nome (Arduino Programmer);
 Definir Command >> C:\avrdude\avrdude.exe
 Definir Arguments >> -C "C:\avrdude\avrdude.conf"
-p atmega328p -c arduino -P COM5 -b 115200 -U
flash:w:"$(TargetDir)$(TargetName).hex":i

 Verificar se o executável (avrdude.exe) está no


diretório (C:\avrdude).
 Pronto para uso!!
Atmega 328P:
Conversor A/D
• Escolha do canal e da referência de tensão:
Deslocamento para esquerda se ativo
Atmega 328P:
Conversor A/D
• Controle do ADC:
Atmega 328P:
Conversor A/D
• inicialização Código

• Aquisção de uma amostra


Atmega 328P

Exercício 1
Atmega 328P:
PWM

• Programando o PWM:

• O PWM é capaz de funcionar em 3 modos:


a. PWM Rápido;
b. PWM Corrigido em Fase
c. PWM Corrigido em Fase e Frequência.
Atmega 328P:
PWM
• O Modo PWM de Frequência e Fase Correta:

• O modo PWM de frequência e fase correta


usa o contador com dupla inclinação.

• O registrador (TCNTn) é incrementado até


atingir o TOP e decrementado até atingir
BOTTOM.
Atmega 328P:
PWM
• O Modo PWM de Fase Correta:

• Quando TCNTn for igual ao Registro de


Comparação de Saída (OCRnA e OCRnB) o
sinal PWM muda. Para mudar a razão cíclica
basta alternar o valor do canal de
Comparação de Saída (OCnA e OCnB).
Atmega 328P:
PWM
Atmega 328P:
PWM
Atmega 328P:
PWM
Atmega 328P:
PWM
• inicialização Código
Atmega 328P

Exercício 2
Introdução

Conversores Estáticos
Básicos
Conversores não Isolados
• Há 3 topologias básicas de conversores CC-CC
não isolados:

• Buck (abaixador de tensão – Vi>Vo);


• Boost (elevador de tensão – Vi<Vo);
• Buck-Boost (elevador ou abaixador de tensão
Vo >Vi>Vo [2].
Buck

• Tensão de entrada (VE) SEMPRE maior que a


tensão de saída (VS);
• Redução de tensão, carregador de baterias;
Boost

• Tensão de entrada (VE) SEMPRE menor que a


tensão de saída (VS);
• Elevação da tensão, conexão com painéis solares;
Buck-Boost

• VE>VS ou VE<VS
• Elevação da tensão ou redução da tensão de
saída.
Introdução

Variável de Controle
Modificação da Razão Cíclica

1 Ton
Ts  D
Fs Ts
Modificação da Razão Cíclica

1
Ts  1 T T

Fs Vo    Vi dt   0dt 
on s

Ts  0 T
on

Ton VT
D Vo  i on  Vi D
Ts Ts
O Que é Controle?

• É algum procedimento que se aplica em algo


para que esse realize o que queremos;

• Controle é tomada de decisão!!

• Em engenharia o controle está associado a


realimentação do sinal de saída.
Modificação da Razão Cíclica

• Na prática, para um conversor CC-CC,


qualquer variável de controle só pode ser
alterada com a mudança da razão cíclica (D);
Função de Transferência

Função de transferência é a representação matemática


da relação entre a saída e a entrada de um sistema.

Função de transferência é a relação da transformada


de Laplace do sinal de saída pelo sinal de entrada de
um sistema.
Tipos de Controladores

• Controle clássico (P, PI, PD, PID, avanço de fase,


atraso de fase);

• Controle moderno (Espaço de estados,


estimadores de estado, observadores de estado);

• Controle Robusto, Ótimo, Adaptativo, etc..


Projeto de Controlador
Função de Transferência
do Conversor boost

Vc Vpv R (1  D)  Lbs
(s)  G(s) 
2

(D  1) CbLbRos  Lbs  Ro (1 D)


o

D 2 2 2
Projeto de Controlador
• Usando os valores abaixo para:

Componente Valor Unidade


Lb 100 6 H
Cb 100 6 F
Ro 47 
fsw 1003 Hz
Vpv 4,7 V
Projeto de Controlador
• Função de transferência:
Vpv Ro (1 D)2  Lbs
G(s) 
(D  1)2 CbLbRos2  Lbs  Ro (1 D)2

0.00188s  220.9
G( s ) 
4.7 07 s 2  0.0001s  11.75

• Zero no semi-plano direito, sistema de fase


mínima.
Projeto de Controlador
• No Matlab:

• Abrindo o sisotool:
Projeto de Controlador
Projeto de Controlador
Projeto de Controlador
Projeto de Controlador
Projeto de Controlador
Projeto de Controlador
• Com o Sisotool do Matlab pode-se projetar o
Controlador adequado, escolheu-se um PI e
um PID:
1.4737
CPI (s) =
s
• Encontra Cpi(s) na forma polinomial, no
Matlab:
Projeto de Controlador
• Resulta nos coeficientes:

a  0 1.47369936668462
b  1 0 

• No PSIM, por facilidade visual, entrar com os


valores encontrados
Projeto de Controlador
Projeto de Controlador
• Verificar se a resposta é a desejada.
Conversor Boost

• Revendo:
Projeto do controlador por Laplace;
Conceitos de Margem de Ganho e Fase;
Lugar das raízes;
Função de transferência de fase mínima.

• Falta:
– De onde vem a Função de Transferência usada?
Conversor Boost
Variáveis de Estado
• Relações do Indutor e do Capacitor:

 d IL ( t )
v Lb (t )  Lb
dt

 i (t )  C dvC (t )
 Cb b
dt
Variáveis de Estado
• Etapa 1

v Lb
Variáveis de Estado
• Etapa 1

v pv (t )  v Lb (t )  0

iCb (t )  iRo (t )
Variáveis de Estado
v pv (t )  v Lb (t )  0
d IL ( t )
Lb  v pv (t ) (1)
dt
iCb (t )  i Ro (t )
d v C (t ) vC
Cb  (2)
dt Ro
Variáveis de Estado

Kx  Ax  Bu
x   iL vC 
T

u  v pv 
0 0  1
A1   1  B1   Lb 
0    
 RoCb   0 
Variáveis de Estado

Kx  Ax  Bu

 0 0 

Lb 0   i Lb     i   1
 0 C     0  1        Vpv 
Lb

bvCb  
vCb  0 
   Ro    u
K x  x B1
A1
Variáveis de Estado
• Etapa 2
Variáveis de Estado
• Etapa 2

v pv (t )  v Lb (t )  v C (t )  0

i Lb (t )  iCb (t )  i Ro (t )
Variáveis de Estado

v pv ( t )  v Lb ( t )  v C ( t )  0
d IL ( t )
Lb  v pv (t )  v C (t ) (3)
dt
iCb (t )  i Lb (t )  i Ro (t )
d vC (t ) v C (t )
Cb  i Lb ( t )  (4)
dt Ro
Variáveis de Estado

Kx  Ax  Bu


 0 1 
 Lb 0   Lb  
i   i Lb   1
0 C   1 1      V pv 
 b v Cb    v Cb   0  

   C b 
R o    u
K x    x B2
A2
Variáveis de Estado
E ta p a 1
                  
0 0  i  1 

 Lb 0   Lb  
i   Lb   
0 C     1     L b  V p v 
  b   v C b  0   v C b 
  
R o C b    0  u

K x      x 
A1 B1

E ta p a 2

 1 
   

 0    1 
 Lb 
0  Lb i  Lb  i   
0 C      
Lb
   L b  V p v 
  b  
v C b   1 1   v C b 
     0  u

?
K x C
b R oC b  x
 

B2
A2
Variáveis de Estado

• Os sistemas de equações são válidos apenas


para cada Etapa de operação e não para o
período completo (Ts).

• Como tornar o circuito válido para um período


completo?

• Buscar o modelo médio por espaço de


estados.
Variáveis de Estado
• Etapa 1 (0-DTs) Onde:
dx (t ) K, A1, B1 , C1
K  A1x (t )  B1u(t ) (3)
dt São matrizes constantes.

y (t )  C1x(t ) (4)

• Etapa 2 (DTs-Ts)
dx (t )
K  A2 x (t )  B2u(t ) (5)
dt
Onde:
y ( t )  C2 x ( t ) (6) A 2 , B 2 , C2
São matrizes constantes.
Variáveis de Estado
• Etapa 1 (0-DTs)
 K 1  A1x  B1u 
K
dx (t )
 A1x (t )  B1u(t ) dx
dt
dt
dx  K 1  A1x  B1u  dt
Aproximação de pequenas ondulações

  K 1  A1x  B1u  dt
DTs DTs
aproximação de
pequenas ondulações: dx 
0 0
x  x, u  u
x (DTs )  x (0)  K 1  A1x  B1u   dt
DTs

x (DTs )  x (0)  K 1  A1x  B1u  DTs


Variáveis de Estado
• Etapa 2 (DTs-Ts)
 K 1  A2 x  B2u 
dx
dt
dx  K 1  A2 x  B2u  dt
Aproximação de pequenas onduções

  K 1  A2 x  B2u  dt
Ts Ts

dx 
DTs DTs

x (Ts )  x (DTs )  K 1  A2 x  B2u   dt


Ts

DTs

x (Ts )  x (DTs )  K 1  A2 x  B2u  (1  D )Ts


Variáveis de Estado
 x ( DTs )  x (0)  K 1  A1 x  B1u  DTs (7)

 x (T s )  x ( DT s )  K 1
 A2 x  B2u  (1  D )Ts (8)
• Substituir (7) em (8)
x ( DTs )  x (0)  K 1  A1x  B1u  DT
x (Ts )  x (0)  K 1  A1 x  B1u  DTs  K 1  A2 x  B 2u  (1  D )Ts
K  x (Ts )  x (0)   Ts  DA1  1  D  A2  x   DB1  1  D  B2  u 

• Usando Euler
dx x (Ts )  x (0)

dt Ts
Variáveis de Estado
• O modelo médio que descreve a dinâmica do
sistema é:

 K dt   DA1  1  D  A2  x   DB1  1  D  B2  u
 dx

 y   DC1  1  D  C 2  x   DE1  1  D  E 2  u
    

• O modelo médio é não linear, necessita ser


linearizado entorno de um ponto de operação.
Variáveis de Estado
• Ponto de Operação, Quiescente, Regime
Permanente.
dx  0  AX  BU
0 
dt Y  CX  EU
    
  DA1  1  D  A2  x   DB1  1  D  B 2  u
A B

K dx
 
 dt    
    

    
 y   DC1  1  D  C 2  x   DE 1  1  D  E 2  u
C E
 

    
   
Variáveis de Estado
• Onde:

A  DA1  (1  D ) A2
B  DB1  (1  D )B 2
C  DC1  (1  D )C 2
E  DE 1  (1  D )E 2
Variáveis de Estado
• Ponto de Operação

 X   A1BU

Y   CA B  E  U
 1
Variáveis de Estado
• Ponto de Operação para o conversor boost:
Y
U

 CA B  E
1 0

 A  DA1  (1  D ) A2

Y
 CA1B B  DB1  (1  D )B2
U
 0 0  0 1 
1

Y 1 0        1 1
   D 1   (1 D)  1  D    (1 D)  
U 
0 1  0  R  1  0 0
 Ro  
  o
Variáveis de Estado
• Ponto de Operação
Y
 CA1B
U
0 0   0 (1 D) 
1

Y 1 0      D (1 D)


    D  (1 D)      
U 0 1 0  (1 D)  0 0
R   R      
 o  o 

 0 (1 D)
1

Y 1 0   1
   1   
U 
0 1 (1 D)  R  0
 o 
Variáveis de Estado
• Ponto de Operação
Y
  C A  1B
U
 1 1 

Y  1 0   R o ( D  1) (1  D )   1 
2

    
U  0 1  1  0 
 0 
 ( D  1) 
 1 
 i Lb   R ( D  1) 2 
     V pv
o

 v C b   1 
  (1  D ) 
 
Variáveis de Estado
• Ponto de Operação
1
i Lb  V pv
R o ( D  1) 2

1
v Cb  V pv
(1  D )

V pv V pv Vc Io
i Lb    
R o ( D  1) 2
 R o (1  D )( D  1) R o (1  D ) (1  D )
1
v Cb  V pv
(1  D )
Variáveis de Estado
• Que resultam nas equações dos ganhos
estáticos por exemplo (9) e (10).

Vpv
Vc  (9)
(1  D )
VC
ILb  (10)
(1  D )Ro
Variáveis de Estado
• Perturbação e Linearização

^

y  Y  y
^
Y  y


u  U  u Onde:
^ ^
U  u

x  X  x
^ ^
X  x

D  D  d
^

^
D  d

• Significa que as perturbações devem ser pequenas.


Variáveis de Estado
• Perturbando a razão cíclica:
D Dd
^

K x  Ax  Bu
.

K x   A1D  A2 1  D   x  B1D  B2 1  D   u
.

      
K x   A1  D  d   A2 1   D  d    x  ...
. ^ ^

      
 
K x   A1D  A1 d  A2  A2D  A2 d  x  ...
. ^ ^

 

K x   A1  A2  d   A1D  A2 1  D    x  ...
.
 ^

 
Variáveis de Estado
• Perturbando os estados:
x Xx
^
K x   A1  A2  d   A1D  A2 1  D    x  ...
.
 ^

 

K  X  x    A1  A2  d   A1D  A2 1  D    X  x   ...


.
 ^
  ^
 ^

    
   
K x   A1  A2  d   A1D  A2 1  D    X   A1  A2  d   A1D  A2 1  D   x  ...
  
.
^ ^ ^ ^

      
 A 

K x   A1  A2  X d  AX   A1  A2  d x  A x  ...
.
^ ^ ^ ^ ^

K x  AX  A x   A1  A2  X d ...
.
^ ^ ^
Variáveis de Estado
• Para o segundo termo (perturbando “d” e “u”):
D Dd
^

K x  ...   B1D  B 2 1  D   u
.
^

u U u
^
 
K x  ...   B1D  B 2 1  D )    B1  B 2  dˆ  u
.
^

   
 EM2
B

K x  ...  B U  uˆ   ( B1  B 2 )dˆ U  uˆ 
.
^

K x  ...  B U  B uˆ  ( B1  B 2 )Udˆ  ( B1  B 2 )du


ˆˆ
^

      
DC
AC
Slide 81

EM2 melhorar
Everson Mattos, 2/13/2017
Variáveis de Estado
• Resultando em:
K x  A X  A xˆ   A1  A 2  Xdˆ  B U  B uˆ  ( B1  B 2 )U dˆ
.
^

U  A xˆ  B uˆ    A1  A 2  X  ( B1  B 2 )U  dˆ
.

K x   X  B
^
A 
DC
           
AC

K x  A X  BU  A xˆ  B uˆ    A1  A 2  X  ( B1  B 2 )U  dˆ
.
^
Variáveis de Estado
• A equação do modelo pode ser escrita:
U  A xˆ  B uˆ    A1  A2  X  ( B1  B 2 )U  dˆ
.

K x   X  B
^
A 
DC

xˆ  A p xˆ  B p uˆ
.

• Onde:
A p   K  1 ( DA1  (1  D ) A 2 ) 
B p   K  1 B  K  1   A1  A 2  X  ( B1  B 2 )U  
Variáveis de Estado
• A equação do modelo pode ser escrita:
yˆ  CX U  Cxˆ  E uˆ   C 1  C 2  X  ( E 1  E 2 )U  dˆ
 E

DC

yˆ  C p xˆ  E p uˆ

• Onde:
C p  ( D C 1  (1  D )C 2 ) 
E p   B   C 1  C 2  X  ( E 1  E 2 )U  
Variáveis de Estado
• O modelo AC de pequenas sinais é:
 ˆ.
 x  Ap xˆ  Bpuˆ
.
 yˆ  C xˆ  E uˆ
 p p

• Aplicando a Transformada de Laplace:

xˆ  Ap xˆ  Bpuˆ sxˆ  Ap xˆ  Bpuˆ sxˆ  Ap xˆ  Bpuˆ


sI  Ap  xˆ  Bpuˆ xˆ  sI  Ap  Bpuˆ


1
Variáveis de Estado
• Aplicando a Transformada de Laplace:
xˆ   sI  Ap  Bpuˆ yˆ  Cp xˆ  E puˆ
1

yˆ  Cp  sI  Ap  Bpuˆ  E puˆ
1

yˆ  Cp  sI  Ap  Bp  E p  uˆ
 1

 

(s )  Cp  sI  Ap  Bp  E p 
yˆ  1

uˆ  
Variáveis de Estado
• Aplicando a Transformada de Laplace:

(s )  Cp  sI  Ap  Bp  E p 
yˆ  1

uˆ  
• Onde:
A p   K  1 ( DA1  (1  D ) A 2 ) 
B p   K  1 B  K  1   A1  A 2  X  ( B1  B 2 )U  
C p  ( DC 1  (1  D )C 2 ) 
E p    B   C 1  C 2  X  ( E 1  E 2 )U  
Variáveis de Estado
E ta p a 1
          
0 0 

Lb 
0  Lb i     i Lb   1 
0 C     1      V p v 
 b   v C b  0   v C b   0  
  
R o    u
K x   x B1
A1

E ta p a 2

1 
          
0

Lb 0   i Lb     i Lb   1 
0      1      V p v 
 C b   v C b  1  v C b   0  
   R o    u
K x    x B2
A2
Variáveis de Estado
• Função de transferência:

Vpv Ro (1  D )2  Lb s
G(Vo,D ) (s ) 
(D  1)2 Cb Lb Ro s 2  Lb s  Ro (1  D )2
Variáveis de Estado
• No Matlab abrir o Simulink
• Usar as matrizes Ap, Bp, Cp, Ep e a saída Y
para gera um modelo em espaço de estados;
• A saída do modelo será comparada com a
resposta do circuito simulado (boost).
Variáveis de Estado:
Validação do Modelo
• A reposta deve ser similar (Simulink):
Variáveis de Estado:
Validação do Modelo
• A reposta deve ser similar (PSIM):
Projeto de Controlador
• Verificando:
 Modelo matemático linearizado;
 Validação do modelo;
 Função de transferência;
 Projeto do controlador;
 Validação do projeto do controlador;

• Falta:
– Projeto do controlador discreto;
– Validação do projeto do controlador discreto;
– Implementação e teste.
Projeto de Controlador
• Discretizar a planta, no Matlab digitar:

• Logo:
0.01646z  0.0634
G(Vo ,D ) ( z )  2
z  1.995z  0.9979

• Projeto do controlador discreto pelo sisotool.


Projeto de Controlador
Projeto de Controlador
• Como o Sisotool do Matlab pode-se projetar o
controlador digitalizado.
5.1646-06 (z+1)
CPI (z) =
(z-1)
• Novamente com o PSIM verifica-se o projeto
• Projeto do PI, adicionar um integrador e
adicionar um zero real, pelo menos, uma
década acima da freq. de cruzamento por zero
desejada.
Projeto de Controlador
Projeto de Controlador
Projeto de Controlador
• Verificando:
Projeto do controlador discreto;
Validação do projeto do controlador discreto;

• Falta:
– Implementar em C o projeto do controlador discreto;
– Validar a implementação em C do projeto do
controlador discreto;
– Implementação e teste.
Projeto de Controlador

• Para implementação em C é normalmente se


usa expansão em frações parciais para que a
implementação seja mais simples e seja
possível realizar o anti-windup na ação de
controle do PI.
Projeto de Controlador
• Expansão em frações parciais:
u
C= A
 z  1
e  z  1
Fazendo o produto dos meios pelos extremos...
u( z  1)  A( z  1)e
uz  u  Aze  Ae
Multiplicando por z ...1

( z 1 )  u  uz 1  Ae  Aez 1
Projeto de Controlador
• Expansão em frações parciais:

Aplicando a transformada inversa Z1...


   u(k )  u(k  1)  Ae(k )  Ae(k  1)
1

Que resulta em:


u(k )  Ae(k )  Ae(k  1)  u(k  1)
Projeto de Controlador
• Aplicando ao conversor, onde:
A  5.1646-06

u(k )  5.1646-06e(k )  5.1646-06e(k  1)  u( k  1)

• No PSIM implementar em bloco C o algoritmo:


Projeto de Controlador
Projeto de Controlador
Projeto de Controlador
• A execução do algoritmo no PSIM deve
resultar em:
Projeto de Controlador
• Verificando:
 Projeto do controlador discreto;
 Validação do projeto discreto;

• Falta:
– Implementação e teste.
Projeto de Controlador

• Escrever o código em linguagem C para controlar a


tensão de saída do conversor boost.
• Utilizar o controlador com ação de controle integral
projetado anteriormente.

• Dicas:
– Use todas as casas decimais fornecidas pelo matlab no formato longo;
– Cuidado com a definição das variáveis, pode haver problemas de tipos;
– Use a interrupção do timer1/counter para calcular a ação de controle;
– Use o código do PSIM como base, pois deve ser praticamente igual;
Projeto do Controlador:
Exemplo de Implementação
Projeto de Controlador
• Verificando (Para um PI):
 Projeto do controlador analógico;
 Validação do controlador analógico;
 Projeto do controlador discreto;
 Validação do projeto discreto;
 Teste no PSIM usando Bloco C;
 Implementação no Arduino.

• Falta:
– Se PI não for suficiente?
Projeto de Controlador

• Nem sempre é possível utilizar um controlador com


ação de controle PI;

• Quando os requisitos de projeto necessitam maior


desempenho, pode-se tentar um controlador PID.

• Entretanto, há casos em que um PID não é suficiente,


nessa situações deve-se procurar outras soluções,
como por exemplo controle adaptativo.
Projeto de Controlador
• Projeto de um PID (use o Matlab para
sintonizar o controlador, por exemplo:

0.137 (s+869.6) (s+3608)


CPID (s) =
s (s+6.521e04)

• O controlador discretizado fica:


0.137z  0.2671z  0.1302
2

CPID (z) =
z 2  1.271z  0.2714
Embarcar o Sistema de Controle

• Acompanhar a apresentação do PSIM


• Validação do projeto do controle analógico
• Validação do projeto do controle digital
Projeto de Controlador

• Controladores digitais podem alterar o


desempenho desejado, devido a inclusão de
dinâmicas como: o PWM, o filtro anti-
Vo (V)

aliasing, zeros de amostragem, resulução


dos conversores AD e DA, etc.

t(s)
Embarcar o Sistema de Controle
• Com o controlador projetado e validado em z,
faz-se a expansão em frações parciais

0.06643z 2  0.1307z  0.06424


CPID (z) =
z 2  1.492z  0.4922
• Quando a função é própria e os polos são reais a
expansão em frações parciais fica:

A B
CPID (z) =  k
z a z b
Embarcar o Sistema de Controle

• Encontrando os polos do denominador fica:


0.0664 26 (z-0.9 941) (z-0.9729)
C P ID (z) =
(z-1) (z-0.4922 )

• Deseja-se representar a FT como a soma de frações


logo:

0.066426 (z-0.9941) (z-0.9729) A B


 k
 z  1  z  0.4922 
=
(z-1) (z-0.4922)
Embarcar o Sistema de Controle

• Encontrando A:
 A  z  1 B  z  1 
 k  z  1 
0.066426 (z-0.9941) (z-0.9729) (z-1)  

 z  0.2714 
=
(z-1) (z-0.4922) z 1   z  1 z 1

• Substituindo o valor do polo em ambos os lados fica:


 B  z  1 
 k  z  1 
0.066426 (1-0.9941) (1-0.9729)  0
0

=A 
( z  1) (1-0.4922) z 1   z  0.2714 z1

A  2.0915 -05
Embarcar o Sistema de Controle
• Encontrando B:
0.066426 (z-0.9941) (z-0.9729)  z  0.4922  A z  0.4922 B z  0.4922 
 k  z 1
 

 z 1
=
(z-1)(z-0.4922)
z0.4922

  z 0.4922 z0.4922

• Substituindo o valor do polo em ambos os lados fica:


0.066426 (0.4922-0.9941) (0.4922-0.9729)
B=
(0.4922-1) z0.4922

B  -0.03156
Embarcar o Sistema de Controle

• Calculo de k (ganho do PID):


0.066426(z-0.9941)(z-0.9729) A  z  0.4922   B  z  1 +(z-1)(z-0.4922)k

(z-1)(z-0.4922) (z-1)(z-0.4922)

• Substituindo A e B tem-se:
0.066426(z-0.9941)(z-0.9729) 2.0915e-05  z  0.4922   -0.03156  z  1 +(z-1)(z-0.4922)k

(z-1)(z-0.4922) (z-1)(z-0.4922)

• Igualando os polinômios
0.066426z2 +...  kz2 +...
k  0.066426
Embarcar o Sistema de Controle

• A parcela proporcional (K) fica:

ke = u 
uk
Ck (z) = k e k = uk  1

ek
k k

• Que resulta em:


uk (n )  kek (n)

• Aplicando ao conversor fica:

uk (n )  0.066426 ek (n)
Embarcar o Sistema de Controle
• A parcela integral (PI) fica:

uPI  z  1  AePI
u PI A uPI
ĈPI (z) = =
ePI z  1 ePI
• Que resulta em:
 PI PI
u z  u  AePI 
z 1
Multiplicando por z1
uPI  uPI z1  AePI z1
1 uPI  uPI z1  AePI z1 Aplicando a tranformada 1
Embarcar o Sistema de Controle
• A equação em diferenças discretas para
• um PI genérico é:
uPI (n )  uPI (n  1)  AePI (n  1)

• Aplicando ao controlador projetado resulta:

uPI ( n )  uPI ( n  1)  2.0915-05ePI ( n  1)


Embarcar o Sistema de Controle
• A parcela derivativa (PD) fica:

uPD  z  b   BePD
uPD B uPD
CPD (z) = =
ePD zb ePD
• Que resulta em:
 PD
u z  buPD
 BePD 
z 1
Multiplicando por z1
uPD  buPD z1  BePD z1
1 uPD  buPD z1  BePD z1 Aplicando a tranformada 1
Embarcar o Sistema de Controle
• A equação em diferenças discretas para
• um PD genérico é:
uPD (n )  buPD (n  1)  BePD (n  1)

• Aplicando ao controlador projetado resulta:

uPD ( n )  0.4922uPD ( n  1)  0.03156ePD (n  1)


Embarcar o Sistema de Controle
• A equação em diferenças discretas para um PID
genérico é:
uk (n )  kek (n)
uPI ( n )  uPI (n  1)  AePI (n  1)
uPD (n )  buPD (n  1)  BePD (n  1)
• A soma das parcela forma a ação de controle
do PID
uPID (n )  uk (n )  uPI (n )  uPD (n )
Embarcar o Sistema de Controle
• Aplicando ao conversor fica:
uk (n )  0.066426 ek (n)
uPI (n )  uPI (n  1)  2.0915-05ePI (n  1)
uPD (n )  0.4922uPD (n  1)  0.03156ePD (n  1)

uPID ( n )  uk ( n )  uPI ( n )  uPD (n )

• UTILIZOU-SE O “FORMAT LONG” DO MATLAB


PARA EVITAR ERROS DE ARRENDONDAMENTO.
Embarcar o Sistema de Controle
• Implementando o algoritmo no PSIM
#include <Stdlib.h> Trata interrução do PWM{
#include <String.h> Vo_1= Entrada[0]; // adiquire o sinal de saida
e_0=Vo-V_1; // calcula o erro
float B=-0.0930392338775065; ek_0=e_; // define o erro par cada parcela do PID
float c=0.271389559871992; epi_0=e_0;
float k=0.137; epd_0=e_0;
float A=0.000131832480171801;
// calcula a ação de controle de cada parcela do PID
float upi_0=0, upi_1=0; uk_0=k*ek_0;
float epi_0=0, epi_1=0; upi_0=upi_1+A*epi_1;
upd_0=c*upd_1+B*epd_1;
float e_0=0, u_0;
// Forma a açao de controle do PID
float upd_0=0, upd_1=0; u_0=uk_0+upi_0+upd_0;
float epd_0=0, epd_1=0;
// Atualiza as variáveis para a próxima iteração
float uk_0=0; epi_1=epi_0;
float ek_0=0; upi_1=upi_0;
epd_1=epd_0;
float Vo=20,Vo_1=0; upd_1=upd_0;
float cont=0;
float fs=50000; // Atualiza a razão cíclica do conversor
Saída[0]=u_0;
}
ATmega 328 - Definições
//---------------------------------------------------------------------------------------------
// Instituto Nacional de Pesquisas Espaciais - INPE
// Universidade Federal de Santa Maria - UFSM
// Curso de Arduino Basico - Avançado
// Santa Maria - RS
// 21/11/2016
// Programa exemplo de controle do PWM utilziando Interrupção
// by Everson Mattos
//-----------------------------------------------------------------------------------------------

#include <avr/io.h>
#include <avr/interrupt.h>
unsigned long duty1,duty2; // Duty Cycle in terms of a percentage.
unsigned long plus; // Value read from A1, in case plus mode is activated
float x; // Float numbers to calculate duty for PWM 1 and PWM 2
float y;
unsigned long pwm1; // Value read from A0 and A2 to give PWM duty cycle
output in terms // of 0-5V
unsigned long pwm2;
void setup(){
ATmega 328 – setup{}
cli(); // disable global interrupts

pinMode(9, OUTPUT);
pinMode(10, OUTPUT);

//TCCR1A = _BV(COM1A1) | _BV(COM1B1) | _BV(COM1A0) | _BV(COM1B0) ;


//phase/frequency correct mode. SELECT THIS FOR INVERTED OUTPUTS.

TCCR1A = _BV(COM1A1) | _BV(COM1B1) ; // phase and frequency correct


mode. NON-inverted mode
TCCR1B = _BV(WGM13) | _BV(CS10); // No set prescale, define on main clock.
ICR1 = 320; // Set time overflow top 160=50kHz
(16e6/(2*50e3)=160)

TIMSK1 |= (1 << TOIE1); // enable timer compare interrupt:


pwm1 = 1024*0.8; // initial value duty to PWM 2
pwm2 = 1024*0.1; // initial value duty to PWM 1

sei(); // enable global interrupts


}
ATmega 328 – loop{}

void loop(){
}
ATmega 328 – loop{}
ISR(TIMER1_OVF_vect)
{
cli(); // disable global interrupts
x = float(pwm2); // Turn read values from the POTs to float for mathematical
y = float(pwm1); // adjustment.
x = x*ICR1; // Multiply with ICR1 and divide by 1023 to give required
percentage
y = y*ICR1;
x = x / 1023;
y = y / 1023;
OCR1B = int(x); //Assign values to OCR Registers, which output the PWM duty
cycle.
OCR1A = int(y);
sei(); // enable global interrupts
}
Objetivos

 Aprender a desenvolver programas em C usando


a plataforma Arduino;
 Instalar e compilar aplicativos para o Arduino
com Atmel Studio;
 Programar algoritmos simples em ponto
flutuante no Arduino;
 Programar algoritmo de controle digital;
 Entender o processo básico de modelagem e
controle de plantas não lineares (conversores CC-
CC)
Referencias
• http://www.oxgadgets.com/2011/04/creating-a-variable-frequency-pwm-output-on-arduino-
uno.html
• https://arduinodiy.wordpress.com/2012/02/28/timer-interrupts/
• http://arduino.stackexchange.com/questions/16698/arduino-constant-clock-output
• http://www.atmel.com/pt/br/devices/ATMEGA328P.aspx
• Modelatem de conversores, 2015, Ivo Barbi, UFSC
• Conversores Estáticos, Clovis Petry, UDESC
• Robert Erickson - Power Electronics, 2ª. Ed.

Você também pode gostar