Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumrio
I. Introduo
..............................................................................................................................................................
4
PROTOCOLO DE COMUNICAO USB
..................................................................................................................................
4
MTODOS DE COMUNICAO USB
.......................................................................................................................................
4
II. A ferramenta SanUSB
.....................................................................................................................................
6
GRAVAO DE MICROCONTROLADORES
..........................................................................................................................
8
GRAVANDO O MICROCONTROLADOR VIA USB NO WINDOWS
.........................................................................
14
COMUNICAO WIRELESS DE MICROCONTROLADORES
.....................................................................................
16
SISTEMA DUAL CLOCK
...............................................................................................................................................................
24
EMULAO DE COMUNICAO SERIAL NO WINDOWS VIA USB
.....................................................................
25
GRAVANDO O MICROCONTROLADOR VIA USB NO LINUX
...................................................................................
32
GRAVANDO O PIC VIA USB PELO TERMINAL DO LINUX OU MAC OSX
.........................................................
34
EMULAO DE COMUNICAO SERIAL NO LINUX
...................................................................................................
36
CIRCUITO COM84 PARA GRAVAO DO gerenciador.hex
....................................................................................
39
III. Comunicao USB com Matlab
...........................................................................................................
41
INTERFACE USB COM O MATLAB
....................................................................................................................................
42
IV. Controle de velocidade de motor utilizando estimador de mnimos quadrados
recursivos e no recursivos
..............................................................................................................................
45
SISTEMA DE CONTROLE
...........................................................................................................................................................
47
ESTIMADOR POR MNIMOS QUADRADOS RECURSIVO - MQR
..........................................................................
48
APLICAO DO MQR PARA ESTIMAO DA PLANTA DO MOTOR CC
............................................................
50
ESTIMAO POR MNIMOS QUADRADOS NO RECURSIVO - MQNR
............................................................
54
APLICAO DO MQNR PARA ESTIMAO DA PLANTA DO MOTOR CC
........................................................
55
PROJETO DO SISTEMA DE CONTROLE
.............................................................................................................................
58
RESULTADOS
....................................................................................................................................................................................
59
CONSIDERAES FINAIS
..........................................................................................................................................................
63
REFERNCIAS BILBIOGRFICAS
..........................................................................................................................................
63
[ 2]
I. Introduo
Um microcontrolador um sistema computacional completo, no qual esto includos
internamente uma CPU (Central Processor Unit), memrias RAM (dados), flash (programa)
e E2PROM, pinos de I/O (Input/Output), alm de outros perifricos internos, tais como,
osciladores, canal USB, interface serial assncrona USART, mdulos de temporizao e
conversores A/D, entre outros, integrados em um mesmo componente (chip).
O microcontrolador PIC (Periferal Interface Controler), da Microchip Technology Inc.
(empresa de grande porte, em Arizona, nos Estados Unidos da Amrica), possui uma boa
diversidade de recursos, capacidades de processamento, custo e flexibilidade de aplicaes.
PROTOCOLO DE COMUNICAO USB
A USB, sigla para Universal Serial Bus, o padro de interface para perifricos externos
ao computador provavelmente mais popular dos j criados. Um sistema USB composto
por hardware mestre e escravo. O mestre chamado de host e o escravo denomina-se
dispositivo ou simplesmente perifrico. Todas as transferncias USB so administradas e
iniciadas pelo host. Mesmo que um dispositivo queira enviar dados, necessrio que o host
envie comandos especficos para receb-los.
A fase de preparao, conhecida como enumerao, acontece logo depois de quando o
dispositivo USB fisicamente conectado ao computador. Nesse momento, o sistema
operacional realiza vrios pedidos ao dispositivo para que as caractersticas de
funcionamento sejam reconhecidas. O sistema operacional, com a obtida noo do
perifrico USB, atribui-lhe um endereo e seleciona a configurao mais apropriada de
acordo com certos critrios. Com mensagens de confirmao do dispositivo indicando que
essas duas ltimas operaes foram corretamente aceitas, a enumerao finalizada e o
sistema fica pronto para o uso.
MTODOS DE COMUNICAO USB
Os mtodos mais comuns de comunicao USB, tambm utilizados pela ferramenta
SanUSB, so:
[ 4]
bidirecional
em
uma
aplicao
no
http://www.youtube.com/watch?v=cRW99T_qa7o.
Este
de
Linux
protocolo
mais
utilizado para comunicao USB com o MATLAB. A emulao serial CDC utilizada para
comunicao com o MATLAB@, foram testadas verses posteriores 3.245 at a
verso 4.084 do CCS Compiler e funcionaram satisfatoriamente.
Mass
Storage
Device
(MSD)
Mtodo
customizado
para
dispositivos
de
detalhes
na
vdeo-aula
disponvel
em
http://www.youtube.com/watch?v=Ak9RAl2YTr4.
Como foi visto, a comunicao USB baseada em uma central (host), onde o
computador enumera os dispositivos USB conectados a ele. Existem trs grandes classes,
ilustradas na figura 1.11, de dispositivos comumente associados a USB: dispositivos de
interface humana (HID), classe de dispositivos de comunicao (CDC) e dispositivos de
armazenamento em massa (MSD). Cada uma dessas classes, ilustradas na figura 1.1, j
possuem um driver implementado na maioria dos sistemas operacionais. Portanto, se
adequarmos o firmware de nosso dispositivo para ser compatvel com uma dessas classes,
no haver necessidade de implementar um driver.
[ 5]
hardware bsico da famlia PIC18Fxx5x com interface USB [1]. Esta ferramenta livre se
mostra eficiente no desenvolvimento rpido de projetos reais, pois no h necessidade de
remover o microcontrolador para a atualizao do firmware. Alm disso, esta ferramenta se
mostra eficaz no ensino e na difuso de microcontroladores, bem como em projetos de
eletrnica e informtica, pois todos os usurios podem desenvolver projetos reais no
ambiente de ensino ou na prpria residncia sem a necessidade de um equipamento para
gravao de microcontroladores. Alm disso, o software de gravao de microcontroladores
USB multiplataforma, pois executvel no Windows@, Mac OSX e no Linux e tambm
[ 6]
plug and play, ou seja, reconhecido automaticamente pelos sistemas operacionais sem a
necessidade de instalar nenhum driver. Dessa forma, ela capaz de suprimir:
conversor TTL - RS-232 para comunicao serial bidirecional, emulado via USB pelo
protocolo CDC, que permite tambm a depurao do programa atravs da
impresso via USB das variveis do firmware;
importante salientar que cargas indutivas como motores de passo ou com corrente
acima de 400mA devem ser alimentadas por uma fonte de alimentao externa.
[ 7]
SanUSB
podem
ser
visualizados
em
http://www.youtube.com/results?search_query=sanusb .
GRAVAO DE MICROCONTROLADORES
A transferncia de programas para os microcontroladores normalmente efetuada
atravs de um hardware de gravao especfico. Atravs desta ferramenta, possvel
efetuar a descarga de programas para o microcontrolador diretamente de uma porta USB
de qualquer PC.
Para que todas essas funcionalidades sejam possveis, necessrio gravar, anteriormente e
somente uma vez, com um gravador especfico para PIC, o gerenciador de gravao pela
USB Gerenciador.hex disponvel na pasta completa da ferramenta no link abaixo, onde
[ 8]
[ 9]
1 cristal de 20MHz;
[ 10 ]
2 capacitores de 22pF;
jump), entra em Estado para Operao do programa aplicativo (firmware) que foi
compilado.
O cabo USB apresenta normalmente quatro fios, que so conectados ao circuito do
microcontrolador nos pontos mostrados na figura acima, onde normalmente, o fio Vcc
(+5V) do cabo USB vermelho, o Gnd (Vusb-) marrom ou preto, o D+ azul ou verde e
o D- amarelo ou branco. Note que a fonte de alimentao do microcontrolador nos pinos
19 e 20 e dos barramentos vermelho (+5V) e azul (Gnd) do circuito provem da prpria
porta USB do computador. Para ligar o cabo USB no circuito possvel cort-lo e conect-lo
direto no protoboard, com fios rgidos soldados, como tambm possvel conectar sem
cort-lo, em um protoboard ou numa placa de circuito impresso, utilizando um conector
USB fmea. O diodo de proteo colocado no pino 20 entre o Vcc da USB e a alimentao
do microcontrolador serve para proteger contra corrente reversa caso a tenso da porta
USB esteja polarizada de forma inversa.
A figura 2.4 mostra a ferramenta
circuito anterior e a posio de cada terminal no conector USB a ser ligado no PC. Cada
terminal conectado diretamente nos pinos do microcontrolador pelos quatro fios
correspondentes do cabo USB.
[ 11 ]
[ 12 ]
[ 13 ]
[ 14 ]
2. Grave no microcontrolador, somente uma vez, com um gravador especfico para PIC ou
com um circuito simples de gravao ICSP mostrado nas prximas sees, o novo
gerenciador de gravao pela USB Gerenciador.hex disponvel na pasta Gerenciador,
compatvel com os sistemas operacionais Windows@, Linux e Mac OSX.
3. Pressione o boto ou conecte o jump de gravao do pino 1 no Gnd para a transferncia
de programa do PC para o microcontrolador.
4. Conecte o cabo USB, entre o PIC e o PC, e solte o boto ou retire o jump. Se o circuito
SanUSB estiver correto acender o led do pino B7.
5. Caso o computador ainda no o tenha o aplicativo Java JRE ou SDK instalado para
suporte a programas executveis desenvolvidos em Java, baixe a Verso Windows@
disponvel em: http://www.4shared.com/file/WKDhQwZK/jre-6u21-Windows@i586-s.html
ou
atravs
do
link:
[ 15 ]
6. Clique em Abrir e escolha o programa .hex que deseja gravar, como por exemplo, o
programa compilado exemplo1.hex da pasta ExemploseBibliotecasSanUSB e clique em
fio
no
microcontrolador
PIC.
Programas
disponveis
em:
http://www.4shared.com/get/aP17n4FT/sanusbee.html
Abaixo uma ilustrao na figura 2.8 para realizar gravao de microcontrolador de
forma wireless com tenso de alimentao de 3,3V.
[ 16 ]
Para mais detalhes basta acompanhar os vdeos Gravao sem fio de microcontroladores
http://www.youtube.com/watch?v=_Pbq2eYha_c
Gravao
sem
fio
de
baud rate do microcontrolador (19200 bps). Para o coordenador, basta conectar, o mdulo
coordenador ao microcontrolador, ver circuito bsico acima, gravar via USB e examinar em
qual firmware (ConfigCoord9600to19200.hex ou ConfigCoord19200to19200.hex) o led no
[ 17 ]
ilustrado na
Adaptador
Wireless:
Agora
grave,
novamente
via
USB,
firmware
[ 18 ]
[ 19 ]
fio
no
microcontrolador
PIC.
Os
Programas
http://www.4shared.com/get/aP17n4FT/sanusbee.html.
esto
Neste
link
disponveis
em
em:
anexo:
Para mais detalhes basta acompanhar os vdeos Gravao sem fio de microcontroladores
http://www.youtube.com/watch?v=_Pbq2eYha_c e Gravao sem fio (wireless) de
microcontroladores
http://www.youtube.com/watch?v=0PcCQtsO1Bwg
via
Gnd, Tx e Rx, como mostra a figura acima do circuito. Na figura, o fio vermelho ligado ao
pino 20 (Vcc) do microcontrolador e ao pino Vcc do modem bluetooth, o fio azul ligado
ao 19 (Gnd) do microcontrolador e ao pino Gnd do modem bluetooth, o fio verde ligado
ao pino 18 (Rx) do microcontrolador e ao pino Tx modem bluetooth, e o fio amarelo
ligado ao 17 (Tx) do microcontrolador e ao pino Rx do modem bluetooth.
2- Parear o modem Bluetooth: Aps alimentar o modem Bluetooth com 3,3V ou 5V,
conectado ao microcontrolador, realizar o pareamento com o PC indo em:
2.1- Iniciar -> Painel de controle -> Adicionar um dispositivo de bluetooth -> linvor ->
senha padro: 1234;
2.2- Aps o pareamento, clique em Iniciar -> Painel de controle -> exibir impressoras e
dispositivos. Ir aparecer o modem pareado, como, por exemplo, o linvor mostrado na
figura 2.13.
1.3- Clicar em cima, por exemplo, do modem de linvor, e verificar qual porta criada pelo
modem Bluetooth, em Hardware, que ser utilizada para a gravao wireless, ilustraod na
figura 2.14.
[ 21 ]
O nmero da porta Serial Padro por Link Bluetooth (COM37) pode ser modificada,
por exemplo, para COM9 como neste tutorial,
clicando com o boto direito em cima da porta -> propriedades -> Configurao de Porta > Avanado -> Nmero da Porta COM.
3- Configurao do Mdulo bluetooth: A gravao wireless s vai acontecer se o
mdulo Bluetooth estiver configurado com o mesmo baud rate do microcontrolador (19200
bps). Para isto, basta conectar, o mdulo bluetooth ao microcontrolador, ver circuito bsico
acima,
gravar
via
USB,
Configbluetotth9600to19200.hex
como
e
mostra
verificar
se
a
o
figura
led
no
2.15,
pino
o
B7
firmware
ir
piscar
[ 22 ]
Adaptador
Wireless:
Agora
grave,
novamente
via
USB,
firmware
[ 23 ]
Agora basta acessar a pasta sanusbee pelo Prompt do Windows@ (Iniciar ->
Pesquisar -> Prompt de Comando), , como mostra a figura 2.17, e digitar, como mostrado
no vdeo PIC wireless Zigbee programming II, as linhas de comando, para transferir os
programas aplicativos.hex como o Exemplo1wireless.hex contido na pasta sanusbee.
Exemplo: sanusbee Exemplo1Wireless.hex p COM9
clock, uma para o canal USB de 48MHz, proveniente do cristal oscilador externo de 20MHz
multiplicada por um prescaler interno, e outra para o CPU de 4 MHz, proveniente do
oscilador RC interno de 4 MHz, como ilustrado na figura 2.18.
[ 24 ]
Communications Devices Class (CDC), que emula uma porta COM RS-232 virtual, atravs
do canal USB 2.0. Dessa forma, possvel se comunicar com caracteres ASCII via USB
atravs de qualquer software monitor serial RS-232 como o HyperTerminal, o SIOW do
CCS Compiler ou o ambiente de programao Delphi. O driver CDC instalado no PC e o
programa aplicativo gravado no PIC, com a biblioteca CDC (#include <usb_san_cdc.h>),
so os responsveis por esta emulao da porta RS-232 virtual atravs da USB.
A biblioteca CDC para o programa.c do microcontrolador est dentro da pasta de
exemplos, a qual deve estar na mesma pasta onde est o programa.c a ser compilado para
a emulao da comunicao serial RS-232. Alm disso, o programa.c deve inserir a
biblioteca usb_san_cdc.h, como mostra a o exemplo de leitura e escrita em um buffer da
EEPROM interna do microcontrolador. As funes CDC mais utilizadas contidas na biblioteca
usb_san_cdc.h para comunicao com a COM virtual so:
usb_cdc_putc() o microcontrolador envia caracteres ASCII emulados via USB.
[ 25 ]
Ex.:
---------------------------------------------------------------------------------------------------------------
[ 26 ]
Escolha a opo Instalar de uma lista ou local especifico (avanado). Aps Avanar,
selecione a opo Incluir este local na pesquisa e selecione a pasta DriversSanUSB, onde
est o driver CDC, , como mostra a figura 2.20.
[ 27 ]
Aps Avanar, clique em Continuar assim mesmo, , como mostra a figura 2.21.
Aguarde enquanto o Driver CDC instalado no Windows@, como ilustrado na figura 2.22.
[ 28 ]
V em painel de controle -> sistema -> Hardware -> Gerenciador de dispositivos -> Portas
(COM & LPT) e confira qual a porta COM virtual instalada, como mostra a figura 2.24.
[ 29 ]
Compiler
ou
Java-SanUSB,
direcionando
para
COM
virtual
instalada
(COM3,COM4,COM5,etc.). No CCS clique em Tools -> Serial port Monitor -> configuration -
> set port options para que o computador entre em contato com o PIC atravs da
emulao serial via USB, como mostra a figura 2.25.
[ 30 ]
emulado
que
{dado=usb_cdc_getc();}
chegou
no
lao
pela
infinito
USB
da
funo
e reter o
if(usb_cdc_kbhit(
principal.
))
comando
--------------------------------------------------------------------------------------------------------------#include <SanUSB.h>
#include <usb_san_cdc.h>// Biblioteca para comunicao serial virtual
BYTE comando;
void main() {
clock_int_4MHz();//Funo necessria para habilitar o dual clock (48MHz para USB e 4MHz para CPU)
usb_cdc_init(); // Inicializa o protocolo CDC
usb_init(); // Inicializa o protocolo USB
usb_task(); // Une o perifrico com USB do PC
while (TRUE)
{
if (usb_cdc_kbhit( )) //avisa se chegou dados do PC
{ //verifica se tem um novo byte no buffer de recepo, depois o kbhit zerado para prximo byte
comando=usb_cdc_getc(); //se chegou, retm o caractere e compara com L ou D em ASCII
if (comando==L) {output_high(pin_b7); printf(usb_cdc_putc, \r\nLed Ligado\r\n);}
if (comando==D) {output_low(pin_b7); printf(usb_cdc_putc, \r\nLed Desligado\r\n);}
}
output_high(pin_B6); // Pisca Led na funo principal
delay_ms(500);
output_low(pin_B6);
delay_ms(500);
}}
[ 31 ]
Esta aplicao substitui a gravao via USB pelo terminal do Linux, pois uma forma
mais simples e direta de gravao. Com apenas dois cliques no instalador automtico
SanUSB.deb possvel instalar este aplicativo em qualquer mquina com Linux (Ubuntu
10.04, equivalente ou posterior). Depois de instalado, a interface de gravao localizada
em Aplicativos -> acessrios.
Se voc j tem o Java instalado (JRE ou SDK) baixe o instalador automtico.deb
atualizado
disponvel
no
link:
[ 32 ]
Java
JRE
disponvel
em:
http://www.4shared.com/file/3mhWZS5g/sanusb.html .
A figura 2.29 mostra a interface grfica desenvolvida para gravao direta de
microcontroladores via USB:
logado com permisso para acessar a porta USB como, por exemplo, super-usurio (sudo
su), e que para estabelecer comunicao com o microcontrolador necessrio gravar
anteriormente no microcontrolador, somente uma vez, com qualquer gravador especfico
para PIC, o gerenciador de gravao pela USB Gerenciador.hex, disponvel na pasta
SanUSB ou em http://www.4shared.com/file/HGrf9nDz/Gerenciador.html .
[ 33 ]
Aps gravar o Gerenciador.hex com um gravador convencional para PIC, coloque o circuito
SanUSB em modo de gravao pela USB (pino 1 ligado ao Gnd (0V) atravs de boto ou fio
) e conecte o cabo USB do circuito no PC. Se o circuito SanUSB estiver correto,
acender o led do pino B7. Pronto, o sistema j est preparado para gravar no
microcontrolador, de forma simples e direta, quantos programas .hex voc desejar
utilizando a interface USB.
Para programar novamente, basta pressionar o boto de gravao no pino 1, desconecte e
conecte o cabo USB de alimentao, selecione o programa.hex desejado em Abrir e
pressione o boto Gravar&Resetar.
sanusb.deb
disponvel
em
http://www.4shared.com/file/sIZwBP4r/100727SanUSB.html .
Para iniciar a gravao com linhas de comando importante seguir os seguintes passos:
1. Grave no microcontrolador, somente uma vez, com um gravador especfico para PIC
com o circuito simples de gravao COM84 descrito deste trabalho ou outro gravador
qualquer, o gerenciador de gravao pela USB Gerenciador.hex, que multiplataforma
(Linux, Mac OSX e Windows@).
2. Pelo Terminal do Linux ou Mac OSX acesse onde est o executvel sanusb, instalado
pelo
arquivo
sanusb.deb,
SanUSBMacPlugandPlay,
onde
no
est
Mac
o
OSX
acesse
executvel
sanusb.
pasta
Mais
de
arquivos
detalhes
em:
http://www.youtube.com/watch?v=rSg_i3gHF3U .
3. Aps entrar na pasta do executvel sanusb, acesse informaes do contedo deste
arquivo digitando:
. / sanusb-h
A figura 2.29 mostra o printscreen de exemplo de um processo de acesso pasta e
tambm do processo de gravao pelo terminal:
[ 34 ]
4. Com o circuito SanUSB montado, coloque-o em modo de gravao (pino 1 ligado ao Gnd
com boto pressionado ou jump ) e conecte o cabo USB do circuito no PC.
5. Para gravar no microcontrolador, o firmware desejado, como o exemplo1.hex, deve
estar mesmo diretrio do executvel sanusb, ento para a gravao via USB, digita-se:
./ sanusb w exemplo1.hex
6. Depois de gravar, remova o boto ou jump de gravao, ento reset digitando:
./ sanusb r
ou simplemente: ./ sanusb w exemplo1 r
[ 35 ]
Communications Devices Class (CDC), que padro no Linux e que emula uma porta COM
RS-232 virtual com o microcontrolador, atravs do canal USB. Dessa forma, possvel se
comunicar com caracteres ASCII via USB atravs de qualquer software monitor serial RS232 como o Cutecom, o minicom ou outros aplicativos com interface serial. A biblioteca
CDC_ACM padro no Linux e o programa aplicativo gravado no PIC com a biblioteca CDC
(#include <usb_san_cdc.h>), so os responsveis por esta emulao da porta RS-232
virtual atravs da USB. A emulao serial muito utilizada tambm para debugar, ou
seja, depurar as variveis de um programa.c, imprimindo-as pela USB durante a execuo
real do programa. Dessa forma, o programador pode encontrar possveis erros na
programao do firmware.
A biblioteca CDC (#include <usb_san_cdc.h>) est dentro da mesma pasta de
ExemploseBibliotecas. Para a compilao de um programa aplicativo com emulao serial,
como o exemplo_emulSerial.c, a biblioteca CDC(#include <usb_san_cdc.h>) deve estar na
mesma pasta do programa exemplo_emulSerial.c a ser compilado ou dentro da pasta
instalada
do
compilador
(C:\Arquivos
de
programas\PICC\Drivers).
programa
[ 36 ]
[ 37 ]
}}
Este firmware realiza a comunicao serial virtual com o protocolo CDC inserido no
firmware do microcontrolador atravs da biblioteca usb_san_cdc.h. Este protocolo padro
no sistema operacional Linux.
Aps gravar o firmware via USB com o executvel linux sanusb, instale o software de
comunicao serial digitando pelo terminal do linux #sudo apt-get install cutecom .
Verifique a porta serial virtual criada digitando dmesg no terminal. Abra o Cutecom,
ilustrado na figura 2.30, digitando cutecom no terminal e direcione a porta virtual criada
em Device do Cutecom, geralmente a porta ttyACM0 ou ttyACM1. Mais informaes
podem ser obtidas no vdeo: http://www.youtube.com/watch?v=cRW99T_qa7o .
[ 38 ]
Dispositivos. Para listar a porta serial virtual gerada, utilizando o Terminal do Linux, basta
digitar ls /dev/ttyACM* . possvel realizar a comunicao depois de clicar em Conectar,
como mostra a figura 2.31. Vrios projetos com a ferramenta SanUSB podem ser vistos em
http://www.youtube.com/results?search_query=sanusb .
[ 39 ]
Este circuito a partir da porta COM DB9 pode ser visualizado na figura 2.33.
[ 40 ]
[ 41 ]
(Aplicativo)
2) SanUSB
3) usb_san_cdc.h
4)usb_desc_cdc.h
A comunicao USB utilizada foi configurada, com a verificao da porta COM instalada
como mostra a figura 2.4, que pode alcanar uma velocidade de comunicao de at 115,2
Kb/s.
A instalao do driver de emulao serial do sistema embarcado pode ser visualizada a
partir da figura 2.19. No trmino da instalao possvel fazer a comunicao USB com o
sistema. Ao conectar o dispositivo e concluir a instalao adicionada uma nova porta
serial ao computador, como mostra a figura 2.24.
A observao de qual porta serial foi adicionada essencial na escolha do parmetro que
deve ser passado a funo inicializa(com). O nmero da porta painel de controle ->
sistema -> Hardware -> Gerenciador de dispositivos -> Portas (COM & LPT) e confira qual
a porta COM virtual instalada, como mostra a figura 2.24.
As funes contidas dentro da pasta Bibliotecas Matlab assim como os arquivos da pasta
Simulink_PM devem ser copiadas para o diretrio de trabalho padro do Matlab de onde
podero ser chamadas atravs do prompt do programa [3]. Em algumas verses do Matlab
o diretrio padro de trabalho a pasta work enquanto em outras a pasta Matlab que
se encontra dentro do diretrio de documentos do usurio.
INTERFACE USB COM O MATLAB
Para testar a comunicao com o PIC USB, foram testadas funes do Matlab para
a placa Mnica [2] em forma de biblioteca [3], como mostra a figura 3.1, onde esto
descritos os processos inicializa(com4), onde a COM gerada pode ser verificada como
mostra a figura 2.24, seta a frequncia setpm_pwm_duty (canal pwm, ciclo de trabalho em
[ 42 ]
inicializa (porta)
inicializa.m
Funo que permite inicializao da comunicao com a placa. O comando
deve ser executado antes do incio de qualquer uma das funes abaixo. A
funo deve obedecer seguinte sintaxe, e.g. inicializa(com1).
finaliza
finaliza.m
Funo que permite a correta finalizao da comunicao com a placa. O
comando deve ser executado ao trmino da comunicao estabelecida com a
placa.
envia_pm (canal, valor)
envia_pm.m
Funo que permite enviar uma tenso entre 0 e 5 volts uma das duas
sadas analgicas da placa de aquisio de dados. Assim, o canal deve ser 1
(pino C2) ou 2 (pino C1) , e o valor pode estar entre 0 e 5V. No retorna
[ 43 ]
nenhum valor.
recebe_pm(canal)
recebe_pm.m
Funo que permite ler (receber) uma tenso entre 0 e 5 volts de uma
das seis entradas analgicas da placa de aquisio de dados. Assim, o canal
deve ser 1, 2, 3, 4, 5 ou 6 , e o valor retornado um float entre 0 e 5.
setpm_pwm_freq(freqncia, duty_cycle)
set_pwm_freq.m
Funo que permite selecionar a freqncia de trabalho e o ciclo de
trabalho dos dois canais PWM ao mesmo tempo. As freqncias podem ser
3khz, 6khz, 12khz, 24khz, 48khz, 60khz, 96khz ou 120khz, passadas como
parmetros 3000, 6000, 12000 e assim por diante. O duty_cycle deve estar
entre 0 e 1. No retorna valor.
set_pwm_duty(canal, duty_cycle, freqncia)
setpm_pwm_duty.m
Funo que permite selecionar o duty cycle do canal de PWM, ou seja, a
porcentagem do perodo na qual se tem nvel lgico alto. Assim, canal deve
ser 1 ou 2 e o duty_cycle deve estar entre 0 e 1. As freqncias podem ser
3khz, 6khz, 12khz, 24khz, 48khz, 60khz, 96khz ou 120khz, passadas como
parmetros 3000, 6000, 12000 e assim por diante. No retorna nenhum valor.
enviapm_dig(canal, valor )
enviapm_dig.m
Funo que permite enviar um valor de nvel lgico alto ou baixo (5 ou
0 volts respectivamente) um dos dois canais digitais de sada da placa de
aquisio de dados. Assim, os canais podem ser 1 ou 2 que correspondem aos
pinos D0 e D1 e o valor deve ser 0 ou 1. No retorna nenhum valor.
recebepm_dig(canal)
recebepm_dig.m
Funo que permite ler (receber) um valor de nvel lgico alto ou baixo
(5 ou 0 volts respectivamente) um dos trs canais de entrada digital da
placa de aquisio de dados. Assim, o canal deve ser um inteiro 1, 2 ou 3 que
correspondem aos pinos RE0, RE1 E RE2 respectivamente. O valor retornado
ser 0 ou 1.
A placa de controle e aquisio o elemento central do projeto, pois estabelece a
comunicao entre o controle realizado pelo Matlab e a planta real [4].
O firmware, em linguagem C, gravado no microcontrolador emula via USB uma porta serial
e organizado como uma mquina de estados possibilitando o acesso s diversas funes
da placa de controle no somente atravs do Matlab, mas tambm atravs de qualquer
[ 44 ]
outro programa de comunicao serial, como o prprio SIOW do CCS compiler mostrado na
figura 2.25.
[ 45 ]
[ 46 ]
SISTEMA DE CONTROLE
Para controle do motor CC foram utilizadas duas placas eletrnicas. Uma placa SanUSB
para interface com o Matlab via interface USB e outra placa para disparo do transistor de
potncia para o motor CC e condicionamento do sinal de tenso do tacogerador, figura 3.4
e figura 3.5, respectivamente. O controle do motor CC atravs do Matlab pode ser visto
tambm em http://www.youtube.com/watch?v=CgXCk6Ub0UY. Os diagramas das
placas so mostrados nas figuras 2 e figura 3. A placa da ferramenta livre SanUSB pode ser
construda
seguindo
tutorial
os
programas
https://dl.dropbox.com/u/101922388/121007SanUSBOrig.zip
http://lista.mercadolivre.com.br/sanusb .
[ 47 ]
ou
disponveis
em
adquirida
em
+12Vcc
560R
0V
TIP125
22uF
1N4007
TACOGERADOR
PINO 13(RC2)
1
10k
PINO 19(Vss)
6
5
2
4
10k
4N25
MOTOR CC
PINO 2(AN0)
3k3
400nF
1k2
4k6
3k3
BC547
ii)
iii)
[ 48 ]
condio inicial a cerca dos valores dos parmetros necessria para a convergncia
do mtodo;
ii)
iii)
iv)
De acordo com o descrito por [5] a formulao bsica dos mnimos quadrados recursivos
dada por:
Eq. 1
Onde
Eq. 2
P(N) uma matriz onde a preciso da estimao est diretamente ligada a magnitude de
seus elementos [5]. Um valor inicial deve ser atribudo a matriz quadrada P, que tem a
ordem igual ao tamanho do vetor
.
Eq. 3
O elemento
amostragem do sistema.
[ 49 ]
Eq. 4
Eq. 6
Atualizao do erro
4));
Eq. 7
[ 50 ]
[ 51 ]
end
setpm_pwm_duty( 1,0,12000);
% ---------------------------------------------------------------------------------------------% ----- RESULTADOS DE SIMULAO
% ---------------------------------------------------------------------------------------------t = 1:nit;
figure(1)
plot(t,y(t),t,yr(t)),title('Sada e Referncia'),xlabel('Amostra');
figure(2)
hold on
plot(t,a1(t),'r'),title('Parametros Estimados'),xlabel('Amostra');
plot(t,a2(t),'y'); plot(t,b0(t),'b');
hold off;
O resultado da simulao de 1000 amostras de uma funo de entrada composta por trens
de pulso de 0,3 pode ser visto na figura 3.5:
Parametros Estimados
5
X: 1000
Y: -1.119
-1
-2
-3
100
200
300
400
500
Amostra
600
700
800
900
1000
Amostra 1
2,02
-1,18
0,3151
Amostra 2
2,132
-1,109
0,2496
Amostra 3
2.313
-1,145
0,2848
Amostra 4
2,145
-1,119
0,2601
[ 52 ]
b0 =
2.1450
a2=0.2601
a2 =
0.2601
a1=-1.119
a1 =
-1.1190
z=tf([b0 0],[1 a1 a2],0.04)
Transfer function:
2.145 z
---------------------z^2 - 1.119 z + 0.2601
Sampling time: 0.04
c=d2c(z)
Transfer function:
39.74 s + 2493
------------------s^2 + 33.67 s + 164
step(c)
Step Response
16
14
12
Amplitude
10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Time (sec)
[ 53 ]
Eq. 10
(t) = [-y(t-1) -y(t-2) ... -y(t-na) u(t-d) ... u(t-d-nb)]
e o vetor de parmetros,
T
y(t) =
(t).
(t) + e(t)Eq. 12
Eq. 13
+ E Eq. 14
[ 54 ]
Eq. 15
G( z) =
b0 + b1.z 1
b0 z 2 + b1.z
=
Eq. 18
1 + a1.z 1 + a2 z 2 z 2 + a1.z + a2
[ 55 ]
Real -time
Clock1
MATLAB
Function
MATLAB recebe _pm
Random
Number
y
To Workspace
Sine Wave
Ramp
Pulse
Generator
Step
PWM_pm
u
To Workspace1
Figura 3.7: Diagrama de blocos para aquisio dos valores de entrada e sada.
Foi utilizado o programa do Matlab a seguir:
% ESTIMACAO DE UM PROCESSO DE SEGUNDA ORDEM
% DADOS CONTIDOS NO ARQUIVO MEDIDAS.DAT
%----------------------------------------------%load medidas.dat
npts=1001;
%u=medidas(1:npts,1);
%y=medidas(1:npts,2);
Y=[];
fi=[];
for j=1:npts
if j<=2
y1=0; y2=0; u1=0; u2=0;
else y1=y(j-1); y2=y(j-2); u1=u(j-1); u2=u(j-2);
end;
Y=[Y; y(j)];
fi=[fi; -y1 -y2 u1 u2];
end;
teta=inv(fi'*fi)*fi'*Y
for t=1:2,
yest(t)=0;
end;
a1=teta(1) ; a2=teta(2) ; b1=teta(3) ; b2=teta(4);
for t=3:npts,
yest(t)=-a1*yest(t-1)-a2*yest(t-2)+b1*u(t-1)+b2*u(t-2);
end;
plot(y,'g');
hold on;
plot(yest,'r');
O programa gerou o grfico da figura 3.8 mostrando a aproximao entre a planta real e a
planta estimada:
[ 56 ]
4.5
3.5
2.5
1.5
0.5
200
400
600
800
1000
1200
[ 57 ]
Step Response
17
16
15
Amplitude
14
13
12
11
10
0.1
0.2
0.3
0.4
0.5
0.6
Time (sec)
G( s) =
Eq. 19
G( s) =
0.0010685.( s + 39,47) 2
s
Eq. 20
[ 58 ]
1.6648
I = 1,6648
D=0,0010
RESULTADOS
Foram atualizados o valores dos PID e construdo um novo diagrama de blocos para
controle do sistema. A figura 3.11 mostra o diagrama no simulink para controle do motor
CC.
[ 59 ]
Real -time
Clock 1
PID
Discrete
PID Controller
2
Constant 2
PWM_pm 1
MATLAB
Function
MATLAB recebe _pm
Scope 1
[ 60 ]
s
c
Zero/pole/gain from input "Input" to output "Output":
9.4108 (s^2 + 36.29s + 362.2)
----------------------------(s^2 + 29.08s + 212.5)
feedback(c*C,1)
Zero/pole/gain from input "Input" to output "Output":
(s+39.47)^2 (s^2 + 36.29s + 362.2)
---------------------------------------(s+174) (s+17.42) (s^2 + 23.31s + 186.2)
Gfb=feedback(c*C,1)
1.1
Amplitude
0.9
0.8
0.7
0.6
0.5
0.1
0.2
0.3
0.4
0.5
0.6
0.7
Time (sec)
[ 61 ]
[ 62 ]
CONSIDERAES FINAIS
O sistema microcontrolado para aquisio e controle da planta foi considerado eficaz pela
baixa quantidade falhas e pela facilidade de conexo via interface USB. O mesmo Hardware
pode ser utilizado em diversos sistemas de controle a partir do Matlab.
O mtodo de sintonia PID Ziegler Nichols em malha aberta mostrou-se eficiente, tornando
a resposta do motor mais rpida e estvel como foi observado nos grficos.
O perodo de amostragem mostrou-se uma varivel importante ao se realizar controles a
partir de um computador utilizando o Matlab. Tempos de amostragem muito pequenos
tornam os clculos realizados pelo computador maiores e o sistema pode se tornar instvel
devido o atraso em ler os sinais. Os valores obtidos pelo MQR apresentaram uma planta
estimada mais simples e com menos zeros, porm a resposta pelo MQNR mostrou-se
semelhante quando ambas foram submetidas a uma entrada em degrau.
O gerador de pulsos mostrou-se mais eficaz quando comparado com outros tipos de sinais
como rampa ou senoidal para estimao da planta do sistema.
Aps a concluso da confeco e montagem, o sistema de controle passou por uma fase de
testes, onde apresentou o resultado esperado no projeto, mostrando ser eficiente,
confivel e de simples de operao.
REFERNCIAS BILBIOGRFICAS
[1]
GRUPO
SANUSB.
Ferramenta
SanUSB.
Disponvel
em:
<
[ 63 ]
[ 64 ]