matheus pilotto fi gueiredo 2013 -...

112
Controle indire medição de velocid Curso de E Monografia do Projet eto de vazão em uma bomba d dade a partir da força contra-e Matheus Pilo Engenharia Elétrica to de Fim de Curso de infusão com eletromotriz do motor otto Figueiredo 2013

Upload: others

Post on 19-Nov-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Controle indireto de vazã

medição de velocidade a partir da força

Curso de Engenharia Elétrica

Monografia do Projeto de Fim de Curso

Controle indireto de vazão em uma bomba de infusão

velocidade a partir da força contra-eletromotriz

Matheus Pilotto Fi

Curso de Engenharia Elétrica

Monografia do Projeto de Fim de Curso

o em uma bomba de infusão com

eletromotriz do

motor

theus Pilotto Figueiredo

2013

Page 2: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Instituto Federal de Educação, Ciência e Tecnologia Sul-rio-grandense

Departamento de Ensino de Graduação e Pós-Graduação

Campus Pelotas

Curso de Engenharia Elétrica

Matheus Pilotto Figueiredo

Orientador: Prof. Dr. Carlos Mendes Richter

Co-orientador: Prof. Dr. Adão Antônio de Souza Júnior

Controle indireto de vazão em uma bomba de infusão com medição de

velocidade a partir da força contra-eletromotriz do motor

Monografia do Projeto de Fim de Curso

Pelotas, RS

2013

Page 3: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Instituto Federal de Educação, Ciência e Tecnologia Sul-rio-grandense

Departamento de Ensino de Graduação e Pós-Graduação

Curso de Engenharia Elétrica

Monografia do Projeto de Fim de Curso

Controle indireto de vazão em uma bomba de infusão com

medição de velocidade a partir da força contra-eletromotriz

do motor

Matheus Pilotto Figueiredo

Relatório submetido como requisito parcial

para obtenção do grau de Engenheiro Eletricista

Banca Examinadora

Prof. Carlos Mendes Richter, Dr (Orientador)

Prof. Adão Antônio de Souza Júnior, Dr. (Co-orientador)

Prof. Mauro André Barbosa Cunha, Dr (Examinador)

Prof. Cláudio Luis d’Elia Machado (Examinador)

Page 4: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

CESSÃO DE DIREITOS

AUTOR: Matheus Pilotto Figueiredo

TÍTULO: Controle indireto de vazão em uma bomba de infusão com medição de velocidade

a partir da força contra-eletromotriz do motor

GRAU: Engenheiro Eletricista ANO: 2013

É concedida ao Instituto Federal de Educação, Ciência e Tecnologia Sul-rio-grandense permissão para reproduzir cópias desta monografia de graduação e para emprestar ou vender tais cópias somente para propósitos acadêmicos e científicos. O(s) autor(es) reserva(m) outros direitos de publicação e nenhuma parte desta monografia de graduação pode ser reproduzida sem autorização por escrito do(s) autor(es).

Matheus Pilotto Figueiredo Rua Benjamin Constant, 1254 96010-020 – Pelotas – RS – Brasil

Page 5: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Dedico este trabalho às pessoas que contribuíram para minha formação acadêmica e

humana desde a infância até hoje, em especial minha mãe, meu pai e familiares.

Agradeço a essas pessoas com grande carinho.

Page 6: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Agradecimentos

Agradeço ao professor Carlos Mendes Richter pela orientação e acompanhamento deste

trabalho.

Agradeço ao professor Adão Antônio de Souza Júnior, pois atuou como co-orientador, com

interesse e efetivo auxílio em termos de idéias e orientação. Além disso, agradeço por ter me

convidado a pesquisar no GET (Grupo de Eletrônica e Telecomunicações), o que foi o ponto

de partida deste trabalho.

Agradeço à Lifemed e ao Fabrício Ferreira Neitzke pela disponibilização do mecanismo

peristáltico, dos equipos e pelas informações fornecidas para realização deste trabalho.

Agradeço ao professor Mauro André Barbosa Cunha por ter sido um dos grandes professores

que tive no IFSUL, tanto como profissional quanto como ser humano. Agradeço também

pelas oportunidades que me proporcionou de participar em trabalhos de pesquisa e

desenvolvimento técnico-científico.

Agradeço aos professores e servidores do IFSUL como um todo pela formação que me foi

proporcionada durante todos esses anos, no ensino médio, no Curso Técnico de Eletrônica e

no Curso de Graduação em Engenharia Elétrica.

Agradeço aos amigos e colegas que conheci no IFSUL pelo convívio, alegria e

companheirismo.

Page 7: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Resumo

Este projeto de fim de curso tem como objeto de estudo uma bomba de infusão

produzida pela empresa de engenharia biomédica Lifemed. Nessa bomba não há sensor de

vazão, mas o valor médio dessa variável é proporcional à velocidade do eixo do mecanismo

peristáltico da bomba. Realiza-se, então, controle indireto da vazão a partir do controle da

velocidade desse eixo.

Com o objetivo de melhorar o rendimento, aumentando a autonomia da bomba quando

alimentada por bateria, utiliza-se um motor DC acionado por sinal PWM em vez do motor de

passo já utilizado comercialmente.

Visando a atingir uma faixa de vazões e precisão adequadas para utilização comercial

e atendimento da norma, é feita uma caracterização funcional da planta atual e a especificação

de um novo conjunto de motor, redução e encoder.

Para compensar a baixa resolução do encoder atual, utiliza-se a velocidade medida a

partir da força contra-eletromotriz do motor. A medição da velocidade é precedida de um

ensaio de calibração em que se utiliza, dentre outros, o método dos mínimos quadrados. Com

base nesse ensaio prévio, as constantes de calibração são recalculadas automaticamente em

tempo de execução.

Dada sua efetividade e simplicidade, é implementado um controlador PID utilizando a

técnica de lugar das raízes. É feito controle direto da posição em vez da velocidade, evitando

erros cumulativos de volumetria.

O erro de posição de regime permanente fica na faixa de ±13% da resolução do

encoder, ficando claro o aumento da resolução equivalente da medida, assim como o bom

funcionamento do controlador PID.

Palavras-chave: Bomba de infusão. Controle indireto de vazão. Motor DC acionado por sinal

PWM. Medida de velocidade a partir da força contra-eletromotriz do motor. Controlador PID.

Page 8: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Abstract

This work’s study object is an infusion pump developed by the biomedical engineering

company Lifemed. The pump isn’t equipped with a flow rate sensor, but the mean value of

that variable is proportional to the speed of the pump’s peristaltic mechanism axis. As a

result, indirect flow rate control is performed by the direct control of the speed of that axis.

In order to improve the efficiency, increasing battery life, a DC motor along with

PWM control signal is used instead of the former stepper motor.

Aiming to reach adequate flow rate range and precision for commercial use and

standards compliance, a functional characterization of the current system and the specification

of a new set of motor, gearhead and encoder is made.

Compensating the poor resolution of the encoder, the speed is measured through the

back electromotive force and used. The speed measurement is preceded by a calibration

experiment in which three methods, including least squares, are used. Based on this

experiment, the calibration constants are recalculated automatically during execution time.

Due to it’s effectiveness and simplicity, a PID controller is implemented using the root

locus method. Position is directly controlled instead of speed, avoiding cumulative volumetric

errors.

Steady state position error is bounded to the range of ±13% of the encoder resolution,

showing clear improvement in the equivalent resolution of the measurement as well as a good

performance of the PID controller.

Keywords: Infusion pump. Indirect flow rate control. DC motor PWM control. Back EMF

speed measurement. PID controller.

Page 9: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Lista de Figuras

Figura 1 Espira simples imersa em um campo magnético constante ...................... 19

Figura 2 Disposição das bobinas em um motor e força contra-eletromotriz gerada

21

Figura 3 Tensão de ripple nas escovas do motor da Figura 2 ................................. 22

Figura 4 Configuração atual da planta .................................................................... 27

Figura 5 Ensaio com equipo, sem líquido de infusão ............................................. 28

Figura 6 Diagrama de blocos do PIC18F4550 ........................................................ 35

Figura 7 Configurações de oscilador disponíveis no PIC18F4550 ......................... 37

Figura 8 Circuito ICSP ............................................................................................ 38

Figura 9 Remapeamento dos vetores de reset e interrupção no compilador C CCS

39

Figura 10 Diagrama de blocos do Timer0 ................................................................ 40

Figura 11 Diagrama de blocos simplificado da função PWM do módulo CCP ....... 41

Figura 12 Cálculo do período do sinal PWM ........................................................... 41

Figura 13 Calculo da resolução do sinal PWM ........................................................ 42

Figura 14 Diagrama de blocos do Timer1 ................................................................ 42

Figura 15 Fluxograma do mecanismo de manutenção do tempo de amostragem .... 43

Figura 16 Circuito de medição da força contra-eletromotriz do motor .................... 46

Figura 17 Ensaio em alta velocidade para determinação do tempo do transitório

elétrico devido à indutância do motor ...................................................................................... 47

Page 10: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Figura 18 Ensaio em baixa velocidade para determinação do tempo do transitório

elétrico devido à indutância do motor ...................................................................................... 48

Figura 19 Sinal de entrada: duty cycle usado no ensaio de calibração ..................... 54

Figura 20 VAN0DIG medida pelo PIC .......................................................................... 55

Figura 21 TMR0, Pulsos do encoder durante todo o ensaio ..................................... 56

Figura 22 TMR0, Pulsos do encoder durante os 10s iniciais do ensaio ................... 56

Figura 23 Integral da velocidade teórica comparada com a posição dada pelo

encoder 57

Figura 24 Posição combinando os pulsos do encoder com a integração da

velocidade teórica 58

Figura 25 Ampliação da Figura 24 ........................................................................... 59

Figura 26 Erro percentual entre a posição dada pelo encoder e a posição obtida

integrando a velocidade teórica entre os pulsos deste .............................................................. 60

Figura 27 Ampliação da Figura 26 ........................................................................... 60

Figura 28 Integral da velocidade calibrada pelo método dos mínimos quadrados ... 61

Figura 29 Ampliação da Figura 28 ........................................................................... 62

Figura 30 Posição combinando os pulsos do encoder com a integração da

velocidade ajustada pelo método dos mínimos quadrados ....................................................... 63

Figura 31 Erro percentual entre a posição dada pelo encoder e a posição obtida

integrando a velocidade ajustada pelo método dos mínimos quadrados entre os pulsos deste 63

Figura 32 Ampliação da Figura 31 ........................................................................... 64

Figura 33 Representação dos números em ponto flutuante do PIC usando o

compilador CCS 65

Figura 34 Resposta de velocidade do sistema à entrada aplicada ............................. 67

Page 11: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Figura 35 Trecho do ensaio utilizado para identificação do sistema ........................ 68

Figura 36 Diagrama de blocos do sistema com o controlador .................................. 70

Figura 37 Lugar das raízes do sistema compensado ................................................. 71

Figura 38 Controlador PID com anti wind-up da ação integral ................................ 72

Figura 39 Comparação entre a posição de referência e a posição medida – 99,36

ml/h 73

Figura 40 Sinal de erro – 99,39ml/h ......................................................................... 74

Figura 41 Ampliação da Figura 40 ........................................................................... 75

Figura 42 Sinal de controle ....................................................................................... 76

Figura 43 Comparação entre a posição de referência e a posição medida – 1 ml/h . 77

Page 12: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Lista de Tabelas

Tabela 1 Ensaio com equipo, sem líquido de infusão ............................................. 28

Page 13: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Lista de Abreviaturas e Siglas

MOSFET Metal-Oxide-Semiconductor Field Effect Transistor

USB Universal Serial Bus

CDC Communications Device Class

rpm Rotações por Minuto

ppr Pulsos por Rotação

pps Pulsos por Segundo

PWM Pulse Width Modulation

USART Universal Synchronous Asynchronous Receiver Transmitter

HID Human Interface Device

Page 14: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Lista de Símbolos

Fr

Vetor força

i Corrente elétrica com sentido convencional

lr

Vetor comprimento de um condutor reto, com sentido dado pela corrente

convencional

Br

Vetor densidade de fluxo magnético

l Vetor unitário comprimento de um condutor reto, com sentido dado pela

corrente convencional

B Vetor unitário densidade de fluxo magnético

B Intensidade do vetor densidade de fluxo magnético

l Comprimento de um condutor

τr

Vetor torque

rr

Vetor raio, apontando para fora

r Raio

τ Vetor unitário torque

U Tensão aplicada aos terminais do motor

Rm Resistência dos enrolamentos do motor, medida a partir de seus terminais

ke Constante de força contra-eletromotriz do motor

ω Velocidade angular do motor

kr Constante de torque do motor

L Indutância do motor

J Momento de inércia da carga acoplada ao motor

t Tempo

b Constante de atrito viscoso

N Valor da redução

Page 15: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

η Rendimento da redução

DDV Tensão de alimentação do motor

θ∆ Deslocamento angular do motor

0a Constante de calibração

1a Constante de calibração

k Constante de calibração

Page 16: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

Sumário

1 Introdução ............................................................................................................. 17

1.1 Objetivos ................................................................................................................................... 18

2 Fundamentos teóricos de funcionamento do motor DC com escovas .................. 19

3 Caracterização física e funcional da planta .......................................................... 26

3.1 Descrição física da planta ......................................................................................................... 26

3.2 Primeiro ensaio de caracterização funcional ............................................................................ 27

3.3 Análise dos resultados do primeiro ensaio ............................................................................... 29

4 Especificação de um novo conjunto de motor, redução e encoder ...................... 31

5 O circuito de processamento, aquisição, controle e comunicação de dados ........ 34

5.1 O microcontrolador ................................................................................................................... 34

5.2 Gravação do microcontrolador ................................................................................................. 38

5.3 Contagem de pulsos do encoder ............................................................................................... 39

5.4 Geração de sinal PWM .............................................................................................................. 40

5.5 Manutenção do tempo de amostragem ................................................................................... 42

5.6 Comunicação de dados com o computador .............................................................................. 44

5.7 Medição da posição/velocidade a partir da força contra-eletromotriz do motor .................... 45

5.7.1 O circuito e o método de medição da força contra-eletromotriz ................................... 46

5.7.2 Desenvolvimento matemático ........................................................................................ 48

5.7.3 Cálculo computacional das constantes de calibração ..................................................... 53

6 Controle de velocidade/posição ............................................................................ 65

6.1 Introdução ................................................................................................................................. 65

6.2 Levantamento da função de transferência ............................................................................... 66

6.3 Projeto do controlador PID ....................................................................................................... 69

6.4 Resultados da implementação prática do controlador PID ...................................................... 73

7 Conclusão ............................................................................................................. 78

Page 17: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

8 Sugestões para trabalhos futuros .......................................................................... 79

9 Referências Bibliográficas .................................................................................... 80

Apêndice A – Circuitos eletrônicos .............................................................................. 81

Apêndice B – Programa MATLAB para aquisição de dados do ensaio de calibração 83

Apêndice C – Programa MATLAB para análise dos dados do ensaio de calibração do

motor 86

Apêndice D – Programa MATLAB para aquisição de dados do ensaio de controle.... 92

Apêndice E – Programa MATLAB para análise dos dados do ensaio de controle ...... 94

Apêndice F – Programa do microcontrolador em C do compilador CCS .................... 96

Anexo A – Características do motor DC 16N78-212E .............................................. 110

Anexo B – Características da redução R16 ................................................................ 111

Page 18: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

17

1 Introdução

Este trabalho é fruto de um convênio de pesquisa estabelecido entre o Grupo de

Eletrônica e Telecomunicações (GET) do Instituto Federal Sul-rio-grandense (IFSUL),

campus Pelotas, e a empresa de engenharia biomédica Lifemed. Foi disponibilizado para este

trabalho o mecanismo peristáltico da bomba de infusão LF SMART, equipado com motor

DC, redução e encoder.

Uma bomba de infusão é um aparelho eletromédico utilizado para infusão enteral (via

trato digestivo) ou parenteral (via sistema circulatório) de alimento e medicamentos em um

paciente sob tratamento médico. Ela produz uma pressão positiva de forma a manter uma

vazão constante durante certo período de tempo. A manutenção da vazão constante possibilita

um tratamento mais efetivo do paciente.

Para gerar uma pressão positiva, normalmente utiliza-se um motor, que acaba sendo o

elemento de maior consumo de energia do sistema devido ao trabalho mecânico que realiza.

Atualmente muitas bombas são alimentadas por bateria como fonte redundante de energia, o

que melhora a confiabilidade das mesmas em relação à falta de energia elétrica. Assim,

considerando a autonomia de energia do sistema quando alimentado por bateria, é de grande

importância a utilização de um conjunto de motor e redução de maior rendimento assim como

o melhoramento das técnicas de acionamento eletrônico, diminuindo a dissipação de energia

na etapa de potência.

Com relação ao sensoriamento da vazão, muitas vezes este não é feito diretamente,

devido ao seu maior custo e complexidade. Na bomba utilizada neste trabalho, o mecanismo

peristáltico foi projetado de forma a gerar uma vazão média proporcional à velocidade de seu

eixo. Assim, aqui será realizado um controle indireto da vazão por meio do controle da

velocidade do eixo do mecanismo peristáltico. Para que o controle indireto seja bem sucedido,

é essencial a execução de ensaios de calibração da relação entre a vazão e a velocidade do

eixo do mecanismo peristáltico, o que de fato já foi feito pela empresa Lifemed.

Para o sensoriamento da posição/velocidade de motores em sistemas digitais,

normalmente se utiliza encoders incrementais acoplados ao eixo do motor ou ao eixo de

controle, após a redução. Ocorre, no entanto, que isso gera custos adicionais para importação

Page 19: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

18

de motores já equipados com encoders, ou então, um aumento no tempo e complexidade da

montagem das bombas, dada a necessidade de acoplamento desse sensor.

Considerando os fatores apontados nos parágrafos logo acima, são apresentados os

objetivos deste trabalho.

1.1 Objetivos

Visando a aumentar a autonomia do sistema quando alimentado por bateria, esse

trabalho tem como objetivo a utilização de um motor DC com escovas acionado por sinal

PWM. Essa escolha justifica-se pelo fato de que o motor DC apresenta maior rendimento do

que o motor de passo, já utilizado comercialmente na bomba deste projeto. Além disso, o

acionamento por sinal PWM diminui a dissipação de energia e reduz a complexidade da etapa

de potência do sistema.

Neste trabalho, o encoder foi acoplado ao eixo de controle em vez de ser acoplado ao

motor, antes da redução. Além disso, o encoder apresenta uma resolução baixa, de 26 pulsos

por rotação. Considerando essa limitação na instrumentação e também os aspectos

econômicos e de montagem apontados na introdução, este trabalho tem como objetivo

explorar a utilização de um método alternativo de medição de velocidade por meio da força

contra-eletromotriz gerada pelo próprio motor. A medição da velocidade do motor é precedida

por um processo de calibração que utiliza, dentre outros, o método dos mínimos quadrados

para minimizar o erro entre a posição dada pela integração da velocidade medida e a posição

dada pelo encoder. A utilização desse método de medição visa a melhorar a instrumentação

da posição, complementando o sinal gerado pelo encoder.

Compensando a inadequação da planta atual ao objetivo de controle desejado, este

trabalho inclui como objetivo a especificação de um novo conjunto de motor, redução e

encoder comerciais adequados à faixa de vazões que se pretende que a bomba seja capaz de

controlar, já que se trata de um equipamento eletromédico e deve ser o mais seguro e preciso

possível, atendendo a todas as devidas normas.

O objetivo final é o controle indireto da vazão. Esse objetivo acaba coincidindo com a

implementação de um controlador direto para a velocidade do eixo do mecanismo peristáltico.

Page 20: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

19

2 Fundamentos teóricos de funcionamento do

motor DC com escovas

O motor de tensão contínua tem seu funcionamento baseado no fato de que um

condutor elétrico de comprimento l pelo qual circula uma corrente i fica sujeito a uma força

Fr

quando imerso em um campo magnético de densidade de fluxo Br

. A Figura 1 ilustra uma

espira simples e um par de polos curvados, de forma que o vetor densidade de fluxo é sempre

perpendicular aos lados da espira. Nessa condição, a força sobre cada lado da espira é dada

por (1):

)ˆˆ(... BlBlF ×=×= liBirrr

(1)

Figura 1 Espira simples imersa em um campo magnético constante

Fonte: Chapman (2005).

Page 21: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

20

Temos então forças constantes e de sentidos opostos nos dois lados da espira, o que

gera um torque. Esse torque é calculado a partir do produto vetorial do raio rr

pela força Fr

conforme a equação:

ττ ˆ.....2.2 liBr=×= Frrrr

(2)

Percebemos que o torque é proporcional à corrente. O vetor unitárioτ tem a direção

do eixo de rotação da espira e sentido tal que, olhando para sua ponta com seta de frente, o

giro que esse torque causaria na espira (inicialmente parada) seria anti-horário. Em um motor

DC comercial o isso pode ser utilizado como uma forma de medir o valor do torque a partir da

corrente. Há, portanto, uma constante de torque que relaciona o torque à corrente que o causa,

sendo seu valor normalmente fornecido pelo fabricante do motor.

Em um motor real, cada bobina tem várias espiras e há várias bobinas defasadas entre

si de certo ângulo. Essas bobinas são conectadas em série e os nós de ligação entre elas são

conectados aos diversos segmentos do anel de comutação. A Figura 2 ilustra um motor de

quatro bobinas e, portanto, anel comutador de quatro segmentos.

Page 22: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

21

Figura 2 Disposição das bobinas em um motor e força contra-eletromotriz gerada

Fonte: Chapman (2005).

Essa figura ilustra, além da disposição das bobinas e do comutador, a tensão gerada

em função da velocidade do motor. Essa tensão é gerada devido ao fato de que os condutores

estão em movimento em um campo magnético. Nesse caso, o motor funciona como gerador e

a comutação faz com que a tensão seja aproximadamente constante, mas com uma oscilação

de ripple, conforme apresentado na Figura 3. Esse ripple na tensão gerada pode ser utilizado,

fazendo com que o motor tenha naturalmente a função de encoder incremental, pois cada

pulso indica uma variação angular fixa. Além disso, o valor da tensão gerada é proporcional à

velocidade, o que pode ser utilizado para instrumentação da mesma, como de fato foi feito

neste trabalho e descreve-se na seção 5.7. A relação entre a tensão gerada e a velocidade

depende de características construtivas de cada motor e normalmente é dada pelo fabricante

sob o nome de constante de força contra-eletromotriz (em inglês, back-emf constant). Deve-se

notar que quanto mais divisões houver no anel de comutação, maior será a frequência do sinal

de ripple sobreposto à tensão gerada e menor a amplitude do mesmo.

Page 23: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

22

Figura 3 Tensão de ripple nas escovas do motor da Figura 2

Fonte: Chapman (2005).

Durante o desenvolvimento deste trabalho, foram avaliados dois métodos para

instrumentação da velocidade, além do que foi utilizado na prática. O primeiro é feito por

meio da medição da corrente do motor e o segundo utiliza a tensão de ripple devida à

comutação. Com relação à medição da corrente do motor, foi projetado um circuito de

medição (apresentado no Apêndice A), mas o sinal apresentou muito ruído devido ao layout

da placa. Com relação à aferição da velocidade a partir da tensão de ripple, em (HILAIRET,

2006) se propõe um método eficiente, mas com exigência de alto processamento adicional e

provavelmente inviável usando o microcontrolador deste trabalho.

Há vários outros pontos interessantes com relação aos aspectos construtivos dos

motores DC, mas para a análise seguinte a descrição apresentada até aqui é suficiente.

Pelo que foi discutido, e seguindo o que é apresentado em (PORTESCAP, 2009),

verificamos que a equação elétrica estática do motor DC é a seguinte:

ω.. keiRmU += (3)

Page 24: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

23

Onde:

• U é a tensão aplicada aos terminais do motor, dada em V;

• Rm é a resistência dos enrolamentos medida a partir dos terminais do motor, dada em

Ω;

• i é a corrente que circula pelo motor, dada em A;

• ke é a constante de força contra-eletromotriz do motor, dada em V/rpm;

• ω é a velocidade angular do motor em rpm.

Sabemos, além disso, que a corrente é proporcional ao torque no eixo do motor:

ikr.=τ (4)

A equação (3) nos dá uma boa ideia intuitiva do comportamento do sistema quando

considerada em conjunto com a dinâmica mecânica da carga para uma resposta a um degrau

de tensão:

• Inicialmente, com o motor parado, a força contra-eletromotriz é nula e a corrente nos

enrolamentos do motor é limitada apenas pela resistência do motor. A indutância do

motor também limita a corrente inicial, mas essa dinâmica é geralmente

desconsiderada, pois é praticamente instantânea em relação à dinâmica mecânica.

Assim, a corrente começa alta, ou seja, o torque é também máximo nesse instante.

• O torque faz com que o motor comece a girar adquirindo certa velocidade,

aumentando a força contra-eletromotriz gerada, o que causa diminuição na corrente

que flui pelo motor;

• Com uma corrente menor, o torque diminui, mas continua a existir, aumentando a

velocidade de forma estável até que esta atinja seu valor de regime permanente,

quando o torque fornecido pelo motor compensa as perdas por atrito, mas não fornece

energia cinética ao eixo do motor.

• A tensão aplicada fica então dividida em duas parcelas: uma relativa à força contra-

eletromotriz gerada pelo motor em decorrência da velocidade e outra relativa à queda

de tensão nos enrolamentos pela passagem da corrente I, relacionada diretamente ao

torque fornecido à carga acoplada ao eixo.

Page 25: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

24

Podemos demonstrar que as constantes de força contra-eletromotriz e de torque têm

valores iguais, partindo do fato de que a potência mecânica fornecida ao motor somada à

potência de perdas por efeito Joule é igual à potência elétrica. A potência elétrica é obtida

multiplicando (3) pela corrente. Para a demonstração partimos então de (5):

ikeiRmiUPeiRmPm ...... 22 ωωτ +===+= (5)

E após algumas simplificações e utilizando (4), chegamos à conclusão de que kekr =

numericamente, sendo kr dado em Nm/A e ke dado em V/(rad/s)=V.s/rad:

ike.=τ (6)

ikeikr .. = (7)

kekr = (8)

Essa igualdade se mantém desde que sejam desconsideradas as perdas no núcleo

ferromagnético do rotor.

Outro ponto importante a ser notado é que a partir de (3) e (4) podemos escrever a

velocidade como função do torque dada uma tensão aplicada U constante:

ω.. kekr

MRmU += (9)

krke

MRm

ke

U

.

.−=ω (10)

2ke

Rm

dt

d=−

ω (11)

Vemos que o gráfico da velocidade em função do torque corresponde a uma reta decrescente

cuja inclinação é dada por (11). Essa medida da inclinação é chamada de constante de

Page 26: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

25

regulação do motor e caracteriza a facilidade de controlá-lo, pois quanto menor for seu valor,

menor será a variação da velocidade com variações de carga para uma tensão fixa aplicada.

Além disso, quando a constante de regulação é pequena, a resistência é pequena, e a

constante de torque é grande, de forma que a corrente será pequena, resultando em uma baixa

queda de tensão iRm. , o que implica em uma faixa maior de tensões que podem ser aplicadas

sem que o motor pare porque iRmU .< .

Um modelo dinâmico mais completo do funcionamento do motor inclui a equação

elétrica (12) e a mecânica (13), apresentadas abaixo:

ω... kedt

diLiRmU ++= (12)

ωω

... bdt

dJikr += (13)

Percebe-se que na equação elétrica (12) que foi incluído o efeito da indutância do motor.

A equação mecânica (13) considera uma parcela de torque devido ao atrito viscoso,

caracterizado pela constante de atrito b, e outra relativa à aceleração da carga acoplada ao

eixo do motor, que possui momento de inércia J.

Essa fundamentação teórica é muito importante para este trabalho como um todo.

Page 27: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

26

3 Caracterização física e funcional da planta

Aqui é descrita a configuração física da bomba e o primeiro ensaio realizado para

obter uma visão geral do funcionamento da mesma.

3.1 Descrição física da planta

A configuração da bomba de infusão que nos foi cedida pela Lifemed para os

primeiros testes envolvendo o uso de motor DC para o controle de vazão incluía:

• o mecanismo peristáltico da bomba de infusão LF SMART;

• um motor DC com escovas e sistema de comutação de metais preciosos,

modelo 16N78-212E do fabricante Portescap;

• uma redução planetária de 121 vezes, modelo R16 do fabricante Portescap;

• um encoder incremental mecânico retirado do scroll de um mouse, gerando 12

pulsos por revolução, acoplado ao eixo do mecanismo peristáltico.

As características e parâmetros técnicos do motor e da redução podem ser visualizados

no Anexo A e no Anexo B, respectivamente.

O encoder de scroll de mouse apresentou problemas de bouncing quando foi feita

leitura de seus pulsos por meio do microcontrolador, tendo sido substituído por um encoder

óptico de mouse de 26ppr. Foi feita uma tentativa de resolver o problema em software,

esperando o tempo dos pulsos espúrios para habilitar a contabilização de um novo pulso. O

tempo de espera teria que ser maior do que o das transições indesejadas. Esse tempo foi

estimado a partir da maior velocidade de trabalho, mas se percebeu que o tempo de duração

das transições indesejadas aumenta conforme o período dos pulsos desejados, de forma que o

tempo de espera não poderia ser fixo, pois limitaria ou a leitura de pulsos rápidos por ser

muito grande, ou incluiria erros na leitura de pulsos lentos por ser menor do que o tempo das

transições espúrias. Foi considerada a ideia de adicionar um filtro passa-baixas analógico para

eliminar os pulsos espúrios, mas isso incluiria o efeito indesejado de modificar o momento em

que o pulso é detectado. A planta, em sua configuração atual, é ilustrada pela Figura 4.

Page 28: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

27

Figura 4 Configuração atual da planta

Fonte: Elaborada pelo autor

3.2 Primeiro ensaio de caracterização funcional

Uma das primeiras atividades deste trabalho foi verificar qual seria a vazão máxima

atingível por meio da configuração inicial apresentada para determinar se englobaria toda a

faixa desejada a princípio, de 0,1ml/h a 1000ml/h. Para tanto foi feito um ensaio sumarizado

na Tabela 1 e no gráfico da Figura 5. Nesse ensaio foi utilizada uma fonte de bancada MPL-

3303 da Minipa com medição de corrente, sendo aplicadas diferentes tensões contínuas ao

circuito. Utilizando um osciloscópio MO-2061 da Minipa foi medida a frequência média do

sinal na saída do encoder de 12 ppr. Com essa frequência foram calculadas a velocidade no

eixo do mecanismo peristáltico e a vazão, supondo-se que cada volta completa corresponde à

infusão de 0,2ml, conforme informação da Lifemed.

Page 29: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

28

Tabela 1 Ensaio com equipo, sem líquido de infusão

Tensão

(V) Corrente(mA)

Frequência

na saída do

encoder(Hz)

Velocidade

no eixo do

mecanismo

peristáltico

(rpm)

Velocidade

no eixo do

motor

(rpm)

Vazão

teórica(ml/h)

1,3 20-50 0,6 3 363 36

2 20-50 1,5 7,5 907,5 90

3 30-50 2,6 13 1573 156

4 30-50 3,7 18,5 2238,5 222

5 30-50 4,75 23,75 2873,75 285

6 30-50 5,8 29 3509 348

7 30-50 6,95 34,75 4204,75 417

8 30-50 8 40 4840 480

9 40-60 9,1 45,5 5505,5 546

10 40-60 10,18 50,9 6158,9 610,8

11 50-60 11,26 56,3 6812,3 675,6

12 40-60 12,5 62,5 7562,5 750

13 50-60 13,7 68,5 8288,5 822

14 50-60 14,6 73 8833 876

15 50-60 15,7 78,5 9498,5 942

16 50-60 16,8 84 10164 1008

17 50-60 18 90 10890 1080

18 50-60 19,1 95,5 11555,5 1146

19 50-60 20,2 101 12221 1212

20 50-60 21,2 106 12826 1272

25 50-60 26,7 133,5 16153,5 1602

Fonte: Elaborada pelo autor

Figura 5 Ensaio com equipo, sem líquido de infusão

Fonte: Elaborada pelo autor.

0

200

400

600

800

1000

1200

1400

1600

1800

0 5 10 15 20 25 30

Vazão(mL/h) x Tensão(V)

Vazão(mL/h) x

Tensão(V)

Page 30: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

29

Foram feitos outros ensaios depois deste usando um resistor shunt de 0,5Ω e um

osciloscópio para ter uma precisão melhor na medição da corrente. Nesses ensaios a corrente

devido à carga variou entre 30mA e 70mA aproximadamente. Verificou-se que o sinal de

corrente é aproximadamente periódico e síncrono com a rotação do motor. Poderia então ser

utilizado como um encoder de 1ppr apenas para calibração da relação entre a força contra-

eletromotriz do motor e a velocidade, conforme descrito no capítulo 5.7. Apesar disso, o mais

interessante seria utilizar os pulsos gerados pela tensão de ripple do motor, possivelmente

eliminando a necessidade de um encoder acoplado ao eixo do motor ou ao eixo de controle.

3.3 Análise dos resultados do primeiro ensaio

Verificou-se pelo ensaio que a vazão de 1000ml/h seria atingida aplicando uma tensão

de 16V. Assim, para atingir tal vazão com uma bateria de 12V, mais facilmente encontrada no

mercado, seria necessário diminuir o valor da redução utilizada. Por meio da planilha de

cálculo descrita no capítulo 4 determinou-se que a redução mais adequada seria de 80 vezes

aproximadamente.

Ainda utilizando a planilha descrita no capítulo 4 calculou-se que a velocidade

aproximada do motor com uma redução de 80 vezes seria de 7320rpm, logo não ultrapassaria

o valor máximo recomendado pelo fabricante para a velocidade no eixo de entrada da

redução, ou seja, 7500rpm. Com a redução atual a velocidade do motor para uma tensão de

12V ultrapassa levemente a velocidade máxima recomendada pelo fabricante.

Foi estimado o máximo torque no eixo do mecanismo peristáltico a partir dos

seguintes parâmetros:

• A constante de torque do motor, com valor nominal de kr =13,6mNm/A;

• O valor da redução utilizada, que é de N=121 vezes;

• O rendimento da redução vale η =0,65;

• O limite superior da corrente medida nos ensaios, que foi considerado como

i=80mA.

Page 31: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

30

Com esses dados, calculou-se o torque máximo no eixo do mecanismo peristáltico

durante o ensaio:

ητ ..._max_ Nkripermec = (14)

mNmAmNmApermec 6,8565,0.121)./6,13).(08,0(_max_ ==τ

(15)

Sabendo esse valor de torque máximo e observando a folha de dados da redução,

verificamos que tanto o torque quanto a velocidade de saída (84rpm para vazão de 1008ml/h)

estariam dentro da zona de operação recomendada pelo fabricante para a redução. O torque no

eixo do motor também ficou dentro da região recomendada pelo fabricante:

krimotor .max_ =τ (16)

mNmAmNmAmotor 1,1)/6,13).(08,0(max_ ==τ (17)

Percebemos que para tensões inferiores a 1,3V aproximadamente, o motor não

apresenta um movimento contínuo. Isso ocorre devido à presença de atrito estático e também

devido ao torque exigido para a movimentação da carga, que varia ao longo do giro do

mecanismo diminuído a velocidade do mesmo ou parando-o em certos pontos.

Esse ensaio foi repetido com a utilização de água sendo bombeada pelo sistema, mas

não houve mudanças significativas nos dados do ensaio, mesmo gerando uma oclusão no

equipo. Em virtude da ausência de mudanças nos resultados, foi descartada a ideia inicial de

utilizar a corrente para determinar a ocorrência de oclusão no equipo.

Essa análise inicial foi muito importante para dar uma visão geral das condições de

funcionamento da bomba com a configuração descrita.

Apesar de o trabalho ter sido realizado com a planta descrita, o encoder utilizado tem

baixa resolução e a faixa de vazões mais utilizada na prática é de 0,1ml/h a 100ml/h, de forma

que foi especificado um novo conjunto de motor, redução e encoder para a planta, conforme

descrito no capítulo seguinte.

Page 32: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

31

4 Especificação de um novo conjunto de

motor, redução e encoder

Para ajudar na especificação de um novo conjunto de motor e redução foi

desenvolvida uma planilha de cálculo em que são inseridos pelo usuário os seguintes

parâmetros relativos a esses elementos:

• A constante de força contra-eletromotriz do motor, kE dada em mV/rpm;

• A constante de torque do motor, kr dada em mNm/A;

• A resistência dos enrolamentos do motor, Rm dada em Ω;

• O valor da redução, N, adimensional;

• A eficiência da redução, η , adimensional;

• O torque máximo necessário no eixo de controle, após a redução,

controleeixo_max_τ , dado em mNm;

• Uma faixa de tensões de entrada que se deseja aplicar, designadas por Vi e

dadas em V.

Para os cálculos, o torque máximo necessário no eixo de controle foi considerado

como constante ao longo do tempo com o valor de 85,6mNm calculado no capítulo anterior.

A partir dele foi obtido o torque máximo no eixo do motor:

mNmN

controleeixo

motoreixo

=

η

ττ

._max_

_max_ (18)

E a corrente relativa a esse torque:

Ak

ir

motoreixo

=

_max_τ

(19)

Page 33: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

32

Foi gerada uma tabela semelhante à do ensaio descrito no capítulo 3. Na primeira

coluna o usuário insere os valores de tensão de entrada desejados Vi. Na segunda coluna é

calculada a velocidade do motor em rpm a partir da fórmula:

rpmk

iRmV

E

imotoreixo

−=

).(1000_ω (20)

Caso a tensão iV aplicada seja inferior ao produto iRm. , a velocidade é considerada

nula.

Sabendo as velocidades no eixo do motor para as diferentes tensões de entrada, na

terceira coluna da tabela é simples determinar as velocidades no eixo de controle usando a

seguinte relação:

rpmN

motoreixo

controleeixo

=

__

ωω (21)

Finalmente, com o valor da velocidade no eixo de controle foi determinada a vazão

teórica, considerando que sejam infundidos 0,2ml a cada rotação do eixo de controle:

( ) hmlQ controleeixoteórica /2,0.60._ω= (22)

Usando essa planilha de cálculo foram testados vários motores, considerando a faixa

de 0,1ml/h até 100ml/h. Para a especificação foram levados em conta os seguintes fatores:

• Os valores máximos de torque e velocidade tanto para a redução quanto para o motor;

• A regulação do motor 2M

m

k

R, que dá uma medida da facilidade de controlar a

velocidade, quanto menor a regulação mais fácil é o controle;

• A parcela da faixa de tensões disponíveis (0-12V) que fornece movimentação contínua

do motor, ou seja, para a qual torqueMi IRV .> ;

Page 34: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

33

• A eficiência da redução, que constitui a parcela mais significativa no rendimento do

conjunto sistema.

O motor especificado foi o 22N78-216E com uma redução R22 de 641 vezes

(rendimento igual a 0,5) ambos do fabricante Portescap. Há, no entanto, outros motores

capazes de satisfazer às necessidades de vazão do projeto, possivelmente com menor custo, no

entanto essa variável foi desconsiderada já que essa informação é desconhecida.

Para a escolha do encoder, considerou-se que sua resolução determina o mínimo passo

de volume infundido. Com a nova redução, cada volta do eixo do mecanismo peristáltico

corresponde a 0,2ml e também corresponde a 641 voltas do eixo do motor, ao qual estaria

acoplado um encoder de M pulsos por revolução, de forma que o mínimo passo de volume

infundido seria:

mlM

V.641

2,0=∆ (23)

Tomando como base a figura 106 da norma NBR IEC 60601-2-24, consideremos que

seja razoável um erro máximo de 1% após 2 minutos de infusão para nossa vazão mínima de

0,1ml/h, que é o pior caso, pois temos menor rotação e, portanto, menos pulsos do encoder. O

volume total nessa vazão e tempo seria 0,0033ml e 1% desse volume corresponde a 3,3e-5ml.

Considerando que esse seja o mínimo passo de volume infundido, substituímos esse valor em

(23) e encontramos:

45,9.641

2,010.3,3 5 =⇒==∆ − M

M

mlmlV (24)

Assim um encoder Type D de 12 ppr do fabricante Portescap seria razoável para a

aplicação. Esse mesmo fabricante possui encoders de até 1024 ppr, de forma que seria

interessante, ao menos em tempo de projeto, utilizar um encoder de maior resolução para

determinar na prática a resolução mais adequada.

Page 35: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

34

5 O circuito de processamento, aquisição,

controle e comunicação de dados

Aqui são descritos os recursos do microcontrolador e os circuitos usados para várias

funções do sistema: manutenção do tempo de amostragem, geração de sinal PWM, contagem

de pulsos do encoder, comunicação de dados com o computador e calibração da velocidade

para obtenção da posição por integração.

5.1 O microcontrolador

Para o processamento dos dados e implementação do controlador foi utilizado um

microcontrolador PIC18F4550, devido ao baixo custo, à facilidade de encontrar no mercado, e

ao conjunto de recursos periféricos como: interface de comunicação USB, módulo CCP para

geração de sinal PWM, conversor A/D e contadores/temporizadores. O diagrama de blocos da

Figura 6 ilustra os principais recursos desse microcontrolador.

Page 36: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

35

Figura 6 Diagrama de blocos do PIC18F4550

Fonte: Microchip (2006).

Page 37: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

36

O PIC18F4550 apresenta uma arquitetura Harvard, em que há barramentos distintos

para programa e dados. Além disso, há um sistema de pipeline de quatro estágios de forma

que a maioria das instruções são executadas em um único ciclo de máquina. Assim, o tempo

de ciclo de processamento TCY é quatro vezes o período do oscilador do sistema TOSC=1/FOSC.

Nesse PIC, há várias configurações de oscilador disponíveis, envolvendo utilização de

ressonador, cristal, oscilador interno ou oscilador externo de outro PIC, por exemplo. Essas

configurações são apresentadas na Figura 7. Há a possibilidade de utilização de PLL para

atingir sinais de clock mais elevados a partir de sinais de menor frequência.

Para utilizar a interface USB é necessário gerar um sinal de clock para a operação da

mesma. Para este projeto foi utilizado um cristal de 12MHz, ligado aos pinos OSC1 e OSC2.

Esse sinal de clock é dividido por três (PLLDIV=0102) gerando um sinal de 4MHZ. O

circuito de PLL gera um sinal de 96MHz a partir desse sinal de 4MHz. Esses 96MHz são

divididos por por dois definindo FOSC = 48MHz (CPUDIV=002). Da mesma forma, uma

divisão por dois gera o sinal de clock de 48MHz do periférico de comunicação USB

(USBDIV=12).

Os parâmetros de configuração de clock estão inseridos dentro de um conjunto maior

de configuration bits. Estes são usados para configuração do microcontrolador em tempo de

gravação, visto que são parâmetros essenciais para o funcionamento do mesmo. Outras

funcionalidades configuradas por meio de configuration bits são: habilitação de reset mestre

(MCLR), proteção do código da memória de programa, reset por queda de tensão (Brownout

Reset), Watchdog Timer, etc.

Page 38: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

37

Figura 7 Configurações de oscilador disponíveis no PIC18F4550

Fonte: Microchip (2006).

Page 39: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

38

5.2 Gravação do microcontrolador

Para gravação do microcontrolador normalmente usa-se um gravador independente do

PIC. Há vários tipos de gravador, alguns usam a porta serial como os JDM, outros usam a

USB, como o Pickit 2. O que há em comum entre eles é um conector de programação ICSP

(In Circuit Serial Programming). Na placa desenvolvida para este trabalho foi adicionado um

circuito para ligação do conector ICSP, apresentado Figura 8.

Figura 8 Circuito ICSP

Fonte: Elaborada pelo autor.

Outra possibilidade é a utilização de um bootloader, que consiste em um trecho de

programa no próprio PIC responsável pela gravação usando a interface USART ou USB do

próprio microcontrolador.

Neste trabalho foi utilizado um gravador Pickit 2 apenas uma vez para gravação de um

um bootloader USB HID (Human Interface Device) fornecido pela Microchip. Ao alimentar o

microcontrolador, o contador de programa (PC) aponta para o vetor de reset (0000h) onde é

testada uma chave de bootloader. Caso esteja pressionada, significa que o usuário deseja que

Page 40: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

39

seja executado o bootloader para gravação de um novo programa. Caso contrário deve ser

executado o último programa gravado pelo usuário. A presença do bootloader exige um

remapeamento dos vetores de reset e interrupção no programa principal, como mostrado na

Figura 9 para o compilador C CCS.

Figura 9 Remapeamento dos vetores de reset e interrupção no compilador C CCS

Fonte: Elaborada pelo autor.

A desvantagem do uso do bootloader é a perda de um pequeno trecho de memória de

programa e a vantagem é a rapidez e facilidade nas reprogramações seguintes, o que ocorre

com freqüência durante um projeto.

5.3 Contagem de pulsos do encoder

A contagem de pulsos do encoder é feita utilizando o pino T0CLKI do

microcontrolador como entrada de pulsos de clock para o Timer0. O Timer0 foi utilizado

como um contador de 16 bits composto por dois registradores de 8 bits, o TMR0H e o

TMR0L, responsáveis por guardar a parte alta e a parte baixa do Timer0, respectivamente.

A leitura do Timer0 é feita lendo primeiro o TMR0L, momento em que o valor do

TMR0H é salvo no buffer TMR0 High Byte para ser lido posteriormente. Esse mecanismo

tem por objetivo evitar o erro de leitura ocasionado quando o TMR0H está prestes a ser

incrementado. Sem esse mecanismo, se TMR0H=00h e TMR0L=FFh, por exemplo, lemos

TMR0L=FFh em um ciclo e no próximo podemos ler TMR0H=01h, caso ocorra um

incremento, ou seja, ocorria um erro de leitura. Lendo primeiro TMR0H=00h, no ciclo

seguinte seria lido TMR0L=00h, devido a um incremento, o que também seria um erro de

leitura.

Para esse contador, há um prescaler configurável cuja função é dividir a freqüência do

sinal de entrada, mas ele não foi utilizado nesse trabalho. Pode-se também habilitar uma

Page 41: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

40

interrupção gerada quando o Timer0 muda seu valor de FFFFh para 0000h, ou seja, quando

ocorre o overflow do contador. A Figura 10 ilustra o funcionamento do Timer0.

Figura 10 Diagrama de blocos do Timer0

Fonte: Microchip (2006).

5.4 Geração de sinal PWM

Para geração do sinal PWM que aciona o motor por meio do MOSFET foi utilizado o

módulo CCP2 do microcontrolador. Este módulo apresenta as funções Capture, Compare e

PWM, sendo possível escolher apenas uma delas para cada um dos dois módulos disponíveis

no PIC. A Figura 11 mostra um diagrama de blocos da função PWM. O sinal PWM depende

do Timer2, que funciona como uma rampa com a qual é comparado o valor de duty cycle

desejado, devidamente registrado em CCPR2L e nos bits 4 e 5 do registrador CCP2CON.

Para completar a resolução de 10 bits do sinal PWM, à rampa gerada pelo Timer2 são

adicionados dois bits menos significativos relativos aos quatro ciclos de pipeline do PIC.

Page 42: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

41

Figura 11 Diagrama de blocos simplificado da função PWM do módulo CCP

Fonte: Microchip (2006).

Conforme ilustra a Figura 12, o período do sinal PWM depende do prescaler do

Timer2, da freqüência de clock do sistema e do registrador PR2, que define o valor máximo

de contagem do Timer2. Neste trabalho foram utilizados PR2 = 255, TOSC = 1/48MHz e

TMR2 Prescale Value = 1, resultando em uma freqüência de 46,875kHz.

Figura 12 Cálculo do período do sinal PWM

Fonte: Microchip (2006).

Page 43: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

42

A resolução do sinal PWM é dada pela fórmula da Figura 13 e para a frequência usada

é de 10 bits.

Figura 13 Calculo da resolução do sinal PWM

Fonte: Microchip (2006)

5.5 Manutenção do tempo de amostragem

O tempo de amostragem do PIC é mantido por meio do Timer1. Esse temporizador

apresenta dois bytes, TMR1H e TMR1L de forma análoga ao Timer0. Esses dois

temporizadores funcionam de forma muito semelhante. A Figura 14 apresenta um diagrama

de blocos para o Timer1. Ele foi utilizado com valor de prescaler igual a 1, recebendo pulsos

a partir do sinal de clock do sistema.

Figura 14 Diagrama de blocos do Timer1

Fonte: Microchip (2006).

Page 44: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

43

Para manutenção do tempo de amostragem, o registrador TMR1L é zerado antes que o

programa entre no laço de controle e nunca é modificado a partir daí. O registrador TMR1H,

no entanto, recebe um valor que será incrementado até que ocorra um overflow (quando o

Timer1 muda seu valor de FFFFh para 0000h). Nesse momento, o flag de interrupção

TMR1IF é setado automaticamente pelo PIC, indicando que o tempo de amostragem já foi

atingido, de forma que o registrador TMR1H é recarregado com seu valor. A Figura 15

apresenta um fluxograma com o mecanismo de manutenção do tempo de amostragem.

Figura 15 Fluxograma do mecanismo de manutenção do tempo de amostragem

Fonte: Elaborada pelo autor

Page 45: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

44

O tempo de amostragem é calculado de acordo com (25):

)1_256).(256).(.4( HTMRVALORToscTa −= (25)

Essa fórmula é justificada pelos seguintes fatos:

• a cada 4.Tosc ocorre um incremento em TMR1L;

• a cada 256 incrementos em TMR1L ocorre um incremento em TMR1H;

• a cada 256-TMR1H incrementos do TMR1H ocorre um overflow setando o

flag de interrupção TMR1IF;

Essa técnica de marcação do tempo evita que o TMR1L seja modificado, preservando

o tempo de amostragem com a precisão do cristal do sistema, o que é muito importante para

evitar erros de volumetria em infusões longas. Já o TMR1H é sempre atualizado logo após um

overflow (TMR1L=00h, TMR1H=00h), de forma que essa ação não interfere nos incrementos

do TMR1H devidos ao TMR1L. No ensaio de calibração da força contra-eletromotriz,

VALOR_TMR1H=210, ou seja:

sMHz

Ta µ33,981)210256).(256.(48

1.4 =−

= (26)

5.6 Comunicação de dados com o computador

A comunicação de dados com o computador foi feita usando a interface USB do PIC.

Para evitar a complexidade do protocolo USB foi utilizada comunicação USB CDC, em que a

transmissão de dados ocorre de forma simples como se estivéssemos utilizando comunicação

RS232. Para que isso fosse possível, foi instalado no computador um driver fornecido pela

CCS, assim, ao conectar o cabo USB do circuito do PIC, é detectada uma porta “USB to

RS232” que pode então ser acessada por meio de um programa em MATLAB ou qualquer

outra linguagem com funções para acesso à porta serial. No programa em C do PIC foram

utilizadas basicamente as funções do compilador usb_cdc_putc e usb_cdc_getc para envio e

recepção de dados, respectivamente. Como o computador é multitarefa em testes feitos

anteriormente, verificou-se que muitas vezes o tempo de amostragem era excedido caso o PIC

esperasse alguma informação do computador. Por essa razão, em nenhuma das rotinas feitas o

Page 46: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

45

computador envia dados continuamente para o PIC a cada período de amostragem. O PIC, no

entanto, continuamente envia dados para o computador para que este os armazene em

arquivos para posterior análise do funcionamento do sistema. O protocolo de comunicação do

PIC com o computador varia para cada rotina programada, dependendo dos dados que se

deseja salvar. Basicamente o computador envia ao PIC um número de 0 a 255 indicando qual

rotina deseja executar e o PIC, que fica continuamente esperando a chegada de um dado. Cada

byte recebido é inserido em um switch em que é escolhida uma dentre várias rotinas. Em

seguida, o programa do PIC, já dentro do laço de controle, envia continuamente para o

computador pacotes de dados como: os pulsos contados pelo TMR0, a tensão medida no canal

AN0 e outros canais analógicos, o duty cycle aplicado ou quaisquer outros dados que se

queira monitorar. Quando o computador envia um novo valor, o PIC interpreta isso como

indicativo de que a rotina deve ser finalizada, mas o valor recebido é irrelevante e assim é

descartado. O programa MATLAB salva os dados em arquivo e eles podem ser plotados e

manipulados. Caso o tempo de amostragem seja excedido, o PIC para de enviar dados ao

computador antes que isso seja solicitado, e assim esse evento é detectado e informado ao

usuário pelo programa MATLAB. Os programas MATLAB mais relevantes responsáveis pela

aquisição e análise de dados de ensaios foram adicionados aos Apêndices de B a E, assim

como o programa do microcontrolador adicionado, ao Apêndice F.

5.7 Medição da posição/velocidade a partir da força contra-

eletromotriz do motor

Para compensar a baixa resolução do encoder acoplado ao eixo de controle, foi

utilizada uma técnica alternativa de medição da velocidade a partir da força contra-

eletromotriz do motor. A ideia consiste em utilizar os pulsos do encoder em combinação com

a integração da velocidade medida entre eles dando uma medida de posição resultante com

maior resolução equivalente. Para relacionar a tensão medida pelo microcontrolador com a

velocidade foi utilizado um processo de calibração automático em que se busca minimizar a

diferença entre a posição dada pelo encoder e a posição dada pela integral da velocidade.

Abaixo são descritos: o circuito, o desenvolvimento matemático e os resultados obtidos pela

aplicação prática dos métodos matemáticos.

Page 47: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

46

5.7.1 O circuito e o método de medição da força contra-eletromotriz

A força contra-eletromotriz gerada pelo motor é medida de forma indireta por meio do

circuito apresentado no Anexo A e redesenhado de forma simplificada na Figura 16. É

utilizada uma tensão de referência externa para o conversor A/D em vez de utilizar os 5V da

alimentação do sistema. Isso foi feito porque o amplificador operacional utilizado, o

LM324N, não é do tipo rail-to-rail, ou seja, a tensão em sua saída não atinge o valor da

tensão de alimentação, mas sim uma tensão garantida pelo fabricante de 1,5V abaixo dela, ou

seja, em torno de 3,5V.

Figura 16 Circuito de medição da força contra-eletromotriz do motor

Fonte: Elaborada pelo autor.

Entre os terminais do motor foi adicionado um diodo de roda livre UG2D cuja função

é evitar sobretensão nos terminais do motor durante o transitório elétrico que ocorre devido à

indutância das bobinas do motor quando o MOSFET não está conduzindo. Para a medição da

tensão gerada pelo motor, é essencial que a corrente seja nula, de forma que devemos esperar

o transitório elétrico devido à indutância.

Com o objetivo de determinar o tempo necessário para o transitório foi feito um ensaio

aplicando ao motor um sinal PWM alternado por intervalos em que o MOSFET é colocado na

Page 48: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

47

região de corte, período durante o qual um sinal de trigger fica em nível alto para possibilitar

a visualização no osciloscópio da tensão no terminal negativo do motor (M-) em relação à

massa. A Figura 17 mostra que um tempo de espera de 80µs para o transitório parece

suficiente. Deve-se notar que a função inverter do osciloscópio foi ativada para facilitar a

visualização. O sinal de trigger é mostrado em azul e o sinal correspondente à tensão sobre os

terminais do motor é mostrado em amarelo.

Figura 17 Ensaio em alta velocidade para determinação do tempo do transitório elétrico devido à indutância do motor

Fonte: Elaborada pelo autor.

A Figura 18 ilustra o mesmo ensaio, mas com aplicação de um duty cycle menor, ou

seja, para uma velocidade menor do motor.

Page 49: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

48

Figura 18 Ensaio em baixa velocidade para determinação do tempo do transitório elétrico devido à indutância do motor

Fonte: Elaborada pelo autor.

5.7.2 Desenvolvimento matemático

A tensão 0ANV na entrada do conversor analógico pode ser descrita por (27):

opampoffsettensaodivfatnkeVV DDAN ____)...(0 +−= ω (27)

Onde,

DDV é a tensão de alimentação, com valor nominal de 12V;

ke é a constante de força contra-eletromotriz do motor, de valor nominal 1,42mV/rpm;

n é o valor da redução utilizada, que vale 121;

ω é a velocidade no eixo do mecanismo peristáltico em rpm;

Page 50: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

49

265

65__

RRR

RRtensaodivfat

++

+= é o fator do divisor de tensão, de valor nominal

0,28;

opampoffset __ é o offset do amplificador operacional, vale no máximo 7mV;

O primeiro método considerado para calibrar a relação entre a tensão medida e a

velocidade consiste em substituir os valores nominais e dados de fabricante em (27). Esses

valores podem diferir dos valores reais em função da variabilidade na montagem do circuito e

no processo de fabricação do motor. Assim este método carece de confiabilidade e exatidão,

embora seja o mais simples.

Manipulando (27) podemos reagrupar seus termos da seguinte forma:

ω.100 aaVAN′+′= (28)

Onde,

opampoffsettensãodivfatVa DD ____.0 +=′ (29)

tensãodivfatnkea __..1 −=′ (30)

Após a conversão de analógico para digital temos o sinal

ωω .1023

.)( 1000 aaV

VVrefAD

ANDIGAN′′+′′== (31)

Onde,

Page 51: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

50

refADV é a tensão de referência usada para o conversor A/D, de valor nominal 3,4V.

Em decorrência de (31) temos que:

1023

.00refADV

aa ′=′′ (32)

1023

.11refADV

aa ′=′′ (33)

Isolando ω em (31) temos:

DIGANDIGAN Vaaa

aV010

1

00 .)(

+=′′

′′−=ω (34)

Onde,

1

00

a

aa

′′

′′−= (35)

1

1

1

aa

′′= (36)

A velocidade poderia ser obtida em qualquer unidade em (34) bastando multiplicar as

constantes por um fator de conversão de rpm para a unidade desejada.

Tomando a equação para a velocidade em RPS, e integrando no tempo em segundos

obtemos o deslocamento angular em rotações θ∆ :

Page 52: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

51

τττθτω dVatadVadad

t

DIGAN

t

DIGAN

tt

.......0

010

0

01

0

0

0∫∫∫∫ +=+=∆= (37)

Dividindo (37) por t obtém-se (38):

t

dV

aat

t

DIGAN τθ

.

. 0

0

10

∫+=

(38)

Podemos reescrever (38) como:

XaaY .10 += (39)

Onde,

t

dV

X

t

DIGAN τ.0

0∫= é o valor médio da tensão no canal AN0 após a digitalização;

tY

θ∆= é a velocidade média desenvolvida, em rotações por segundo.

Com relação a (39), a variável X pode ser calculada facilmente usando integração

numérica. A variação angular θ∆ pode ser obtida em rotações a partir da contagem de

pulsos do encoder, o que na prática consiste em zerar o Timer0 no início do período de

integração dividindo seu valor final pela resolução do encoder de 26ppr.

Assim, o segundo método para determinar as constantes de calibração consiste em

realizar um conjunto de ensaios a diferentes velocidades obtendo um conjunto de N valores de

X e Y, que podem ser utilizados no método dos mínimos quadrados para ajuste a uma reta

(regressão linear), dando como solução os parâmetros 0a e 1a por meio das fórmulas:

Page 53: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

52

2

11

2

1111

2

0

.

.).(

=

∑∑

∑∑∑∑

==

====

N

i

i

N

i

i

N

i

i

N

i

ii

N

i

i

N

i

i

XXN

XYXYX

a (40)

2

11

2

1111

.

).(.

=

∑∑

∑∑∑

==

===

N

i

i

N

i

i

N

i

i

N

i

i

N

i

ii

XXN

YXYXN

a (41)

Um terceiro método para calcular os parâmetros 0a e 1a é obtido notando que em

(31), para velocidade nula, temos 00 )0( aV DIGAN′′= . Ou seja, uma das constantes é obtida

simplesmente medindo a tensão quando a velocidade do motor é nula. A partir daí,

reescrevemos (31) chamando 0a ′′ de k:

ω.)0(00 kVV DIGANDIGAN −= (42)

Depois isolamos ω :

k

VV DIGANDIGAN 00 )0( −=ω (43)

E integramos da mesma forma que antes:

k

dV

tk

Vd

k

Vd

k

V

t

DIGAN

DIGAN

t

DIGAN

t

DIGAN

τ

ττθ

.

.)0(

..)0( 0

0

0

0

0

0

0∫

∫∫ −=−=∆ (44)

Page 54: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

53

Isolando k chegamos a (45):

θ

τ

θ ∆−

∆=

∫ dV

tV

k

t

DIGAN

DIGAN

.

.)0( 0

0

0

(45)

Verificamos que a constante k pode ser obtida pelo microcontrolador, visto que

depende do valor medido no canal analógico AN0 para velocidade nula do motor, do número

de pulsos do encoder (obtido a partir do Timer0), do tempo de duração do ensaio (registrado

pelo programa) e da integral do sinal convertido pelo CAD no canal analógico 0.

O três métodos apresentados permitem calcular as constantes da equação que relaciona

a tensão medida com a velocidade, ou seja, são métodos de calibração, se o motor for visto

como um sensor de velocidade.

5.7.3 Cálculo computacional das constantes de calibração

Utilizando a planta apresentada no capítulo 3, o sistema microcontrolado, e um

programa em MATLAB, foi feito um ensaio visando a encontrar as constantes de calibração

usando os três métodos apresentados na seção anterior. Na prática, em um sistema embarcado,

um dos processos de calibração deve ser realizado internamente ao microcontrolador. Neste

trabalho apenas o terceiro processo, foi implementado no PIC, embora os outros fossem

igualmente de fácil programação. No Matlab, entretanto os três métodos foram testados e

comparados para o cálculo das constantes de calibração:

1. Utilização de valores nominais e dados de fabricante;

2. Utilização do método dos mínimos quadrados;

3. Medição da tensão no canal analógico AN0 para velocidade nula do motor

seguida do cálculo da variável k.

No ensaio realizado, o microcontrolador gera uma rampa crescente de sinal PWM e o

programa MATLAB vai registrando em arquivo os seguintes sinais:

Page 55: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

54

• A tensão VAN0DIG, que é a tensão relativa à força contra-eletromotriz do motor;

• Os pulsos no encoder, correspondendo à variável TMR0, que nos dão o

deslocamento angular em rotações θ∆ se dividirmos o valor de TMR0 pelos

26 ppr do encoder;

• O vetor de tempo, útil para a integração numérica e para obter o tempo final de

ensaio;

• O valor do duty cycle (ciclo útil do sinal PWM) aplicado, usado apenas para

relacionar com os demais sinais.

A Figura 19 apresenta o sinal aplicado ao motor durante o ensaio:

Figura 19 Sinal de entrada: duty cycle usado no ensaio de calibração

Fonte: Elaborada pelo autor.

A Figura 20 ilustra o sinal VAN0DIG medido pelo PIC. Devido à configuração do

circuito, a tensão medida diminui com o aumento da velocidade, conforme mostra o gráfico.

Page 56: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

55

Nota-se também que o sinal de velocidade é periódico, visto que a carga é periódica ao

longo do ciclo do mecanismo peristáltico. Outro ponto importante é a presença de um sinal de

ruído, que aparentemente aumenta com a velocidade. Devemos notar que a medida de

velocidade obtida com a calibração terá a mesma forma e ruído do sinal VAN0DIG, sendo a

calibração responsável apenas por determinar um offset e um fator de escala relacionando

essas variáveis.

Figura 20 VAN0DIG medida pelo PIC

Fonte: Elaborada pelo autor.

A Figura 21 e a Figura 22 mostram o número de pulsos do encoder crescendo, durante

todo o ensaio e durante os 10s iniciais, respectivamente. Como a velocidade aumenta de

forma aproximadamente linear com o tempo, a posição aumenta de forma aproximadamente

quadrática.

Page 57: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

56

Figura 21 TMR0, Pulsos do encoder durante todo o ensaio

Fonte: Elaborada pelo autor.

Figura 22 TMR0, Pulsos do encoder durante os 10s iniciais do ensaio

Fonte: Elaborada pelo autor.

Page 58: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

57

A partir do ensaio de calibração, foram analisados no Matlab os três métodos de

calibração da velocidade apresentados na seção anterior. O primeiro consiste em

simplesmente substituir os valores nominais na equação da velocidade. Temos assim uma

velocidade calibrada a partir de valores teóricos, que não foram medidos e não são conhecidos

com exatidão.

A Figura 23 apresenta uma comparação entre os sinais de posição obtidos pelo

encoder e pela integração da velocidade teórica. Verificamos claramente que há um erro nas

constantes de calibração, já esperado em vista do que foi apontado no parágrafo anterior. Uma

calibração mais precisa poderia ser obtida medindo as constantes utilizadas em (27) para cada

bomba de infusão produzida, mas seria um processo que consumiria muito tempo. Além

disso, não seria automático de forma que não poderia ser feito pelo próprio sistema ao longo

do tempo com a finalidade de compensar possíveis modificações nesses parâmetros.

Figura 23 Integral da velocidade teórica comparada com a posição dada pelo encoder

Fonte: Elaborada pelo autor.

Page 59: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

58

Uma solução pensada para evitar o acúmulo de erros ao longo do tempo consiste em

utilizar os pulsos do encoder como uma medida de referência da posição e a integral da

velocidade entre os pulsos, para determinar as posições entre eles, sendo o valor dessa integral

zerado a cada pulso. A Figura 24 mostra o resultado dessa técnica, que melhora a medida da

posição de maneira geral.

Figura 24 Posição combinando os pulsos do encoder com a integração

da velocidade teórica

Fonte: Elaborada pelo autor.

A Figura 25 permite visualizar erros na posição obtida pela integração da velocidade

entre os pulsos do encoder.

Page 60: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

59

Figura 25 Ampliação da Figura 24

Fonte: Elaborada pelo autor.

A Figura 26 e a Figura 27 apresentam o erro percentual relativo a um pulso do encoder

(1/26 rotações). O erro é calculado como a diferença entre a posição dada pelo encoder e a

posição obtida combinando os pulsos deste com a integração da velocidade teórica.

Page 61: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

60

Figura 26 Erro percentual entre a posição dada pelo encoder e a posição obtida integrando a velocidade teórica entre os pulsos deste

Fonte: Elaborada pelo autor.

Figura 27 Ampliação da Figura 26

Fonte: Elaborada pelo autor.

Page 62: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

61

O segundo modo de calibração fez uso do método dos mínimos quadrados, como

descrito na seção anterior. Os valores X e Y foram obtidos dividindo o tempo total do ensaio

em algumas partes.

A velocidade obtida a partir do método dos mínimos quadrados, ao ser integrada no

tempo, gera um sinal muito mais próximo do sinal de posição do encoder, conforme mostra a

Figura 28. Apesar de ter um resultado muito melhor, com menor acúmulo de erros, há um erro

entre a posição obtida pelo encoder e a obtida pela integração da velocidade ajustada pelo

método dos mínimos quadrados, o que é ilustrado pela Figura 29.

Figura 28 Integral da velocidade calibrada pelo método dos mínimos quadrados

Fonte: Elaborada pelo autor.

Page 63: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

62

Figura 29 Ampliação da Figura 28

Fonte: Elaborada pelo autor.

Utilizando a técnica de combinar a posição obtida pelo encoder com a posição obtida

pela integral da velocidade ajustada pelo método dos mínimos quadrados, têm-se erros muito

pequenos, como mostram a Figura 30, a Figura 31 e a Figura 32.

Page 64: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

63

Figura 30 Posição combinando os pulsos do encoder com a integração da velocidade ajustada pelo método dos mínimos quadrados

Fonte: Elaborada pelo autor.

Figura 31 Erro percentual entre a posição dada pelo encoder e a posição obtida integrando a velocidade ajustada pelo método dos mínimos quadrados

Fonte: Elaborada pelo autor.

Page 65: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

64

Figura 32 Ampliação da Figura 31

Fonte: Elaborada pelo autor.

A Figura 32 mostra que o erro fica na faixa de ±3% da posição angular correspondente

a um pulso do encoder.

Utilizando o terceiro método para encontrar as constantes de calibração obtêm-se

resultados muito próximos dos obtidos usando o método dos mínimos quadrados e por essa

razão os gráficos foram omitidos.

Para utilização no microcontrolador foi implementada a calibração usando o terceiro

método em tempo de execução, ou seja, a constante k é recalculada a cada pulso do encoder.

Como mostra a Figura 32, há erros na medição da posição pela integral da velocidade

a cada pulso do encoder, de forma que o sinal de posição combinado varia nesses instantes

devido à correção. Em decorrência disso, o erro de posição usado pelo controlador tenderá a

ter variações maiores nesses instantes.

Page 66: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

65

6 Controle de velocidade/posição

6.1 Introdução

O título deste capítulo fala em controle de velocidade/posição porque ao controlar

diretamente uma destas variáveis no tempo automaticamente estamos controlando a outra.

Neste trabalho, no entanto, considerou-se mais adequado fazer o controle direto da posição. A

razão é que o controle direto da posição garante que não haja acúmulo de erros de volumetria

ao longo do tempo. Fazendo controle direto da velocidade, a ocorrência de perturbações e

mesmo o transitório inicial do sistema fazem com que o sinal de velocidade controlada seja

diferente do sinal de velocidade de referência em alguns momentos, de forma que a integral

da velocidade controlada pode ser diferente da integral da velocidade de referência. Isso

implica que o volume final infundido na realidade pode ser diferente do desejado em função

da velocidade de referência. Controlando diretamente a posição temos um controle de

velocidade em que o volume final infundido tende a ser igual ao desejado.

Em razão dessa escolha, a posição de referência em função do tempo consiste em uma

rampa com inclinação dada pela velocidade de referência. Como a posição de referência

aumenta constantemente seu valor ao longo do tempo, sua representação em ponto flutuante

vai perdendo precisão, pois os bits menos significativos vão sendo descartados com o

crescimento do número. A Figura 33 ilustra a representação dos números em ponto flutuante

no PIC utilizando o compilador CCS.

Figura 33 Representação dos números em ponto flutuante do PIC

Fonte: CCS

Page 67: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

66

Com o objetivo de evitar essa perda de precisão foi utilizado o método seguinte: a

cada pulso do encoder subtrai-se o valor 1/26 tanto da posição de referência como da posição

do mecanismo peristáltico, de forma a limitar os valores dessas variáveis sem modificar o

erro, dado pela diferença entre elas.

A posição do eixo do mecanismo peristáltico em rotações é dada por:

veltegralinposTMR

permeceixopos _._26

0___ += (46)

Assim, subtraindo 1/26 rotações a cada pulso do encoder, a posição do eixo do

mecanismo peristáltico é dada pela integral da velocidade medida entre os pulsos, notando

que ela tem seu valor zerado a cada pulso de forma a evitar o acúmulo de erros conforme foi

apresentado na seção 5.7. Além disso, no PIC, o valor da posição dada pela integral da

velocidade foi limitado ao valor 1/26 que seria o máximo valor para essa variável caso o

processo de instrumentação fosse perfeito.

Conclui-se então que com essa alteração tanto o sinal da posição de referência como o

da posição do eixo do mecanismo peristáltico terão no tempo a forma de dente de serra, mas

isso não muda em nada o erro que é a variável efetivamente utilizada pelo controlador.

6.2 Levantamento da função de transferência

Para o levantamento da função de transferência da planta foi feito um ensaio aplicando

uma entrada u(t) à planta. A resposta de velocidade é ilustrada pela Figura 34:

stV

stsV

stsV

stV

tu

80

855

5110

10

)(

≥−

<≤−

<≤−

<−

= (47)

Page 68: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

67

Figura 34 Resposta de velocidade do sistema à entrada aplicada

Fonte: Elaborada pelo autor.

Podemos ver claramente que a resposta ao degrau da planta muda ao longo do tempo.

Para fins de projeto foi utilizada a parte do ensaio apresentada na Figura 35.

Page 69: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

68

Figura 35 Trecho do ensaio utilizado para identificação do sistema

Fonte: Elaborada pelo autor.

Foi considerado um modelo de primeira ordem para modelagem da resposta de

velocidade da planta. Assim, a função de transferência para posição é dada por:

)1..()(

)()(

+==

ss

K

sU

sYsG

τ (48)

Aplicando o teorema do valor final à resposta de velocidade ao degrau aplicado

calculamos a constante K:

9,0.101.

.10

.lim0

===+→

regs

yKs

K

ss

τ (49)

Page 70: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

69

VrpsK /09,010

9,0== (50)

A constante de tempo τ é obtida graficamente pelos pontos apresentados na Figura

35, sabendo que após uma constante de tempo a velocidade atinge aproximadamente 63,2%

de seu valor de regime permanente.

Assim, a função de transferência aproximada do sistema é:

)1.013,0(

09,0)(

+=

sssG (51)

6.3 Projeto do controlador PID

O primeiro controlador considerado foi o PID, dada sua simplicidade. Esse

controlador tem a seguinte função de transferência:

s

KisKpsKdsKd

s

KiKp

sE

sUsC

++=++==

...

)(

)()(

2

(52)

A partir de (52) verificamos que o controlador adiciona um polo na origem e dois

zeros, que podem ser reais ou complexos, dependendo dos parâmetros Kp, Ki e Kd.

Com a adição do controlador, temos o seguinte diagrama de blocos para o sistema:

Page 71: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

70

Figura 36 Diagrama de blocos do sistema com o controlador

Fonte: Elaborada pelo autor.

O projeto do controlador foi feito colocando um zero sobre o polo real da planta e o

outro no ponto médio entre o polo real da planta e a origem. Assim a função de transferência

do controlador tem a forma:

s

ssKi

sE

sUsC

)1.026,0)(1.013,0(

)(

)()(

++== (53)

O lugar das raízes do sistema compensado é apresentado na Figura 37 utilizando um

ganho 68400≅Ki . Esse ganho foi escolhido porque proporciona polos de malha fechada

mais rápidos, com menos oscilação, mantendo-os suficientemente lentos para que o sistema

digital seja capaz de realizar o controlador desejado. São considerados suficientemente lentos

porque estão próximos do polo real original da planta, que tem constante de tempo

aproximadamente 6 vezes maior do que o tempo de amostragem utilizado para o laço de

controle, que vale 2,26ms. Caso o sistema apresentasse comportamento indesejado esse ganho

poderia ser diminuído, tornando a resposta transitória mais lenta e oscilatória, no entanto.

Page 72: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

71

Figura 37 Lugar das raízes do sistema compensado

Fonte: Elaborada pelo autor

Substituindo o ganho 68400≅Ki em (53) e comparando-a com (52) após as devidas

multiplicações, encontramos os parâmetros do controlador para o ponto do LGR escolhido:

2668=Kp (54)

68400=Ki (55)

12.23=Kd (56)

No tempo, o controlador gera a seguinte relação entre o erro e o sinal de controle:

Page 73: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

72

dt

deKddteKiteKptu

t

.).(.)(.)(0

++= ∫ τ (57)

No microcontrolador a lei de controle foi implementada a partir de (57). Obtém-se o

erro, que é multiplicado pelo ganho proporcional de forma a obter a parcela proporcional do

sinal de controle. A integração é feita usando o método dos trapézios e não é a integração

direta do erro, visto que foi adicionado um sistema de anti wind-up do tipo back calculation

and tracking, conforme o diagrama de blocos da Figura 38. A derivada do erro de posição é

calculada como a diferença entre a velocidade de referência e a velocidade medida.

Figura 38 Controlador PID com anti wind-up da ação integral

Fonte: Silva (2000).

A constante Tt foi calculada usando a regra empírica (58) sugerida em (SILVA, 2000):

TdTiTt .= (58)

Page 74: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

73

6.4 Resultados da implementação prática do controlador PID

Utilizando o controlador descrito na seção anterior foram realizados ensaios de

desempenho utilizando diferentes vazões de referência. Serão primeiramente apresentados os

resultados para uma vazão de referência de 99,6ml/h em um ensaio com duração de 60s. A

vazão de referência desejada era na verdade de 100ml/h, mas não pôde ser obtida devido à

forma como seu valor é calculado no PIC, a partir de um byte enviado pelo computador. Esse

problema, no entanto poderia ser minimizado enviando para o PIC um valor em ponto

flutuante por meio de quatro bytes.

A Figura 39 ilustra os primeiros segundos de controle, onde se percebe o

funcionamento do algoritmo usado para evitar o crescimento dos valores de posição medida e

posição de referência, conforme explicado na introdução deste capítulo.

Figura 39 Comparação entre a posição de referência e a posição medida – 99,36 ml/h

Fonte: Elaborada pelo autor

Page 75: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

74

Comparando a Figura 39 e a Figura 41 percebemos que, ao corrigir os erros da

integração da velocidade tomando o encoder como referência, surgem alterações bruscas no

valor do erro. Percebemos que essas alterações bruscas geram os maiores erros ao longo do

controle, ou seja, o gargalo está na instrumentação da velocidade/posição e não no controlador

em si. Os valores de erro nesses instantes de correção têm valor máximo em torno de 1,5.10-3.

Como cada pulso do encoder corresponde a 1/26=0,038 rotações, conclui-se que para esta

vazão a utilização da força contra-eletromotriz para aferição da velocidade efetivamente

melhorou a instrumentação da posição diminuindo a resolução equivalente a

aproximadamente ±4% de seu valor original.

Figura 40 Sinal de erro – 99,39ml/h

Fonte: Elaborada pelo autor

Page 76: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

75

Figura 41 Ampliação da Figura 40

Fonte: Elaborada pelo autor

A Figura 42 apresenta o sinal de controle, que tem valor médio em torno de 2,5V. Esse

sinal de controle passa por uma etapa de saturação em que fica limitado à faixa de 0-10V. Em

seguida é convertido para um valor de duty cycle do sinal PWM levando em conta o tempo

utilizado para medição da tensão relativa à força contra-eletromotriz do motor. Percebemos

que ele é periódico, compensando a mudança de carga ao longo do ciclo do mecanismo

peristáltico, que também é periódica.

Page 77: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

76

Figura 42 Sinal de controle

Fonte: Elaborada pelo autor

A seguir são apresentados os resultados para uma vazão referência de 1ml/h,

aproximadamente, que foi a menor experimentada.

A Figura 43 nos mostra que para baixas velocidades a medição da posição a partir da

força contra-eletromotriz do motor não funciona corretamente e os erros de correção são

muito próximos do valor correspondente a um pulso do encoder, ou seja, 0,038 rotações. Na

verdade, mesmo nos momentos em que a posição do mecanismo peristáltico parece

acompanhar a posição de referência isso não acontece na realidade devido ao erro de medição

da velocidade. Nesse caso o desempenho fica dependente da medida de posição usando quase

que exclusivamente o encoder, que apresenta baixa resolução.

Page 78: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

77

Figura 43 Comparação entre a posição de referência e a posição medida – 1 ml/h

Fonte: Elaborada pelo autor

Foram experimentadas também as vazões de referência de 5ml/h, 10ml/h, 50ml/h,

600ml/h e 650ml/h. A maior vazão atingível experimentada foi 600mL/h, para a qual o erro

de posição ficou na faixa de ±0.005 rotações que corresponde a ±13% da resolução do

encoder.

Page 79: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

78

7 Conclusão

Concluiu-se com esse trabalho que a utilização de motor DC para acionamento do

mecanismo peristáltico é uma alternativa viável desde que sejam utilizados motor, redução e

encoder adequados à faixa de vazões e ao erro de infusão máximo aceitáveis.

Verificou-se que a técnica de utilização da força contra-eletromotriz do motor

efetivamente trouxe melhorias à aferição da posição para vazões médias e altas. Para vazões

baixas a instrumentação da velocidade foi ineficiente, de forma que a medida de posição ficou

dependente quase que exclusivamente do sinal do encoder, que tinha baixa resolução.

O sistema microprocessado se mostrou suficiente para a implementação do

controlador, aquisição dos dados e aplicação do sinal de controle.

Page 80: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

79

8 Sugestões para trabalhos futuros

Verificou-se que mudanças no valor da tensão da fonte em infusões mais demoradas

podem alterar significativamente os resultados da técnica de instrumentação da velocidade,

principalmente para baixos valores dessa variável. Em razão disso, propõe-se que a etapa de

potência seja modificada, utilizando um MOSFET de canal P para o acionamento do motor,

que então seria ligado entre a massa e o dreno do MOSFET. Isso facilitaria inclusive o

processo de calibração que passaria a ter uma única variável a ser descoberta. A única

desvantagem seria o fato de que MOSFETs de canal P apresentam maior resistência de

condução RDS(on).

Em novos projetos recomenda-se que sejam utilizados o motor, redução e encoder

especificados nesse trabalho, pois assim será possível atingir uma faixa de vazões mais usual

(0,1ml/h-100ml/h), eliminado o principal gargalo encontrado neste trabalho, que foi a baixa

resolução do encoder, associada ao fato de que ele estava acoplado depois da redução.

Deve-se avaliar a influência da resolução da etapa de potência no controle para baixas

velocidades, pois ela pode passar a ser o gargalo do sistema com a troca do encoder.

Sugere-se que seja analisada a possibilidade de utilização da medição dos pulsos da

tensão de ripple do motor em combinação com a medição da força contra-eletromotriz para

avaliar a possibilidade de eliminar a necessidade de um encoder na aferição da posição.

Para um controle mais seguro da vazão sugere-se que seja pesquisada uma alternativa

para medição dessa variável. Caso isso não seja possível, é muito importante que sejam

realizados ensaios mais precisos da relação entre a velocidade do eixo do mecanismo

peristáltico e a vazão utilizando uma balança eletrônica de precisão ou então um sensor de

vazão apropriado. Esses ensaios são importantes principalmente para baixas vazões, pois a

norma não exige um ensaio para a mínima vazão que os fabricantes afirmam que a bomba é

capaz de manter com precisão.

Page 81: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

80

9 Referências Bibliográficas

CHAPMAN, Stephen J. Electric Machinery Fundamentals. 4 ed. Nova York: McGraw-

Hill, 2005.

FUNDAMENTOS das máquinas CC. Disponível em: <http://www.ufjf.br/ramoieee/files/2010/08/fundamentos.pdf> . Acesso em: 2 dez. 2013. PORTESCAP. Catálogo de produtos.2009

MICROCHIP, PIC18F2455/2550/4455/4550 Data Sheet. 2006. Disponível em: < http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf > Acesso em: 2 dez. 2013. CCS, What is the format of floating point point numbers. Disponível: <http://www.ccsinfo.com/faq.php?page=mchp_float_format>. Acesso em: 2 dez. 2013. SILVA, João Manoel Gomes da. Wind-up da ação integral. 2000. Disponível em: <http://www.ece.ufrgs.br/~jmgomes/pid/Apostila/apostila/node31.html>. Acesso em: 2 dez. 2013. HILAIRET, M., AUGER, F. Sensorless speed measurement using current harmonic

spectral estimation in a DC-motor. In: International Symposium on Power Electronics, 2006.

Page 82: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

81

Apêndice A – Circuitos eletrônicos

Page 83: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

82

Page 84: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

83

Apêndice B – Programa MATLAB para

aquisição de dados do ensaio de calibração

%INICIALIZAÇÃO clear all; close all; clc scrsz = get(0,'ScreenSize'); t_contr_des = 120;%s ta = 256*(256-210)/12000000; imax = floor(t_contr_des/ta)+1; vfcem = zeros(1,imax); TMR0 = zeros(1,imax); duty = zeros(1,imax); t = zeros(1,imax); s = serial('COM4'); fopen(s); %Entra no programa de calibração pelo computador fwrite(s,0); [buff_com,n_bytes_lidos,msg] = fread(s,6); disp(msg); i=0; while n_bytes_lidos==6 i = i + 1; t(i) = (i-1)*ta; vfcem(i) = buff_com(1) + 256*buff_com(2); TMR0(i) = buff_com(3) + 256*buff_com(4); duty(i) = buff_com(5) + 256*buff_com(6); [buff_com,n_bytes_lidos,msg] = fread(s,6); end t = t(1:i); vfcem = vfcem(1:i); TMR0 = TMR0(1:i); duty = duty(1:i); if t(i)<59 disp('Tempo de amostragem excedido!\n'); else fwrite(s,0); [buff_com,n_bytes_lidos,msg] = fread(s,8); disp(msg); %converte do ponto flutuante do PIC para o do computador expoente = buff_com(1)-127; if(buff_com(2)>=128) sinal = -1; else sinal = 1;

Page 85: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

84

buff_com(2) = buff_com(2)+128; end vfcem0 = sinal*(buff_com(2)*65536 + buff_com(3)*256 + buff_com(4))/(2^(23-expoente)); TMR0_final = buff_com(5) + 256*buff_com(6); conta_ciclos = buff_com(7) + 256*buff_com(8); sprintf('vfcem0: %d',vfcem0) sprintf('TMR0_final: %d',TMR0_final) sprintf('conta_ciclos: %d',conta_ciclos) [buff_com,n_bytes_lidos,msg] = fread(s,8); %converte do ponto flutuante do PIC para o do computador expoente = buff_com(1)-127; if(buff_com(2)>=128) sinal = -1; else sinal = 1; buff_com(2) = buff_com(2)+128; end integral_vfcem = sinal*(buff_com(2)*65536 + buff_com(3)*256 + buff_com(4))/(2^(23-expoente)); sprintf('integral_vfcem: %d',integral_vfcem) %converte do ponto flutuante do PIC para o do computador expoente = buff_com(5)-127; if(buff_com(6)>=128) sinal = -1; else sinal = 1; buff_com(6) = buff_com(6)+128; end k = sinal*(buff_com(6)*65536 + buff_com(7)*256 + buff_com(8))/(2^(23-expoente)); sprintf('k: %d',k) fid = fopen('vfcem0.bin','w'); fwrite(fid,vfcem0,'float'); fclose(fid); fid = fopen('TMR0_final.bin','w'); fwrite(fid,TMR0_final,'float'); fclose(fid); fid = fopen('conta_ciclos.bin','w'); fwrite(fid,conta_ciclos,'float'); fclose(fid); fid = fopen('k.bin','w'); fwrite(fid,k,'float'); fclose(fid); fid = fopen('integral_vfcem.bin','w'); fwrite(fid,t,'float'); fclose(fid); fid = fopen('vfcem.bin','w'); fwrite(fid,vfcem,'float'); fclose(fid); fid = fopen('TMR0.bin','w');

Page 86: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

85

fwrite(fid,TMR0,'float'); fclose(fid); fid = fopen('duty.bin','w'); fwrite(fid,duty,'float'); fclose(fid); fid = fopen('t.bin','w'); fwrite(fid,t,'float'); fclose(fid); end fclose(s);

Page 87: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

86

Apêndice C – Programa MATLAB para análise

dos dados do ensaio de calibração do motor

%INICIALIZAÇÃO clear all; close all; clc scrsz = get(0,'ScreenSize'); %CARREGA VARIÁVEIS DO ENSAIO DE CALIBRAÇÃO fid = fopen('vfcem0.bin','r'); vfcem0 = fread(fid,'float'); fclose(fid); fid = fopen('k.bin','r'); k_pic = fread(fid,'float'); fclose(fid); fid = fopen('vfcem.bin','r'); vfcem = fread(fid,'float'); fclose(fid); fid = fopen('TMR0.bin','r'); TMR0 = fread(fid,'float'); fclose(fid); fid = fopen('duty.bin','r'); duty = fread(fid,'float'); fclose(fid); fid = fopen('t.bin','r'); t = fread(fid,'float'); fclose(fid); dt = t(2); pos_encoder = TMR0/26;%rotações %CALCULA VELOCIDADE DO MECANISMO PERISTÁLTICO A PARTIR DA TENSÃO MEDIDA %USANDO DADOS DO FABRICANTE E CONSTANTES DE PROJETO %ESPERA-SE QUE ESSA VELOCIDADE SEJA DIFERENTE DA REAL EM VISTA DA INEXATIDÃO %DOS DADOS DO MOTOR, ASSIM COMO OCORRE COM OS VALORES DOS RESISTORES E A %TENSÃO DA FONTE DE ALIMENTAÇÃO, QUE PODEM DIFERIR DE SEUS VALORES NOMINAIS %HÁ TAMBÉM O OFFSET DO AMPOP ke = 0.00142;%V/rpm - dado do fabricante ref_ad = 3.36;%V - tensão medida R2 = 33000;%ohms - valor nominal do resistor R6 = 5860;%ohms - valor medido R5 = 6800;%ohms - valor nominal do resistor val_max_ad = 1023;%valor máximo para resolução de 10 bits v_fonte = 12;%V - valor de tensão nominal da fonte utilizada fat_div_tensao = (R5+R6)/(R5+R6+R2); reducao = 121;

Page 88: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

87

fat_conv_dig_analog = (ref_ad/val_max_ad); fat_conv_rpm_rps = 1/60; vel_teorica_motor = fat_conv_rpm_rps*fat_conv_dig_analog*(1023 - vfcem)/(fat_div_tensao*ke);%rps vel_teorica_mec_per = vel_teorica_motor/reducao;%rps %PLOTA OS SINAIS DO ENSAIO %figure('Position',scrsz) figure(1) plot(t,duty) ylabel('Sinal de entrada(duty cycle)'); xlabel('tempo(s)') title('Sinais do ensaio de calibração') figure(2) plot(t,vfcem); ylabel('V_A_N_0_D_I_G - Tensão medida pelo CAD(0-1023)'); xlabel('tempo(s)') title('Sinais do ensaio de calibração') figure(3) plot(t,TMR0) ylabel('TMR0 - Posição do mec. peristáltico(pulsos)'); xlabel('tempo(s)') title('Sinais do ensaio de calibração') %% MÉTODO 1 %INTEGRA O SINAL DE VELOCIDADE TEÓRICA NO MECANISMO PERISTÁLTICO PELO MÉTODO %DOS TRAPÉZIOS ENCONTRANDO A POSIÇÃO trapezios=dt*(vel_teorica_mec_per(1:length(vel_teorica_mec_per)-1)+vel_teorica_mec_per(2:length(vel_teorica_mec_per)))/2; trapezios2 = t*0; trapezios2(2:length(trapezios2)) = trapezios; pos_mec_per_integral_vel_teorica = trapezios2; for i=2:length(t) pos_mec_per_integral_vel_teorica(i) = pos_mec_per_integral_vel_teorica(i-1) + trapezios2(i);%rotações end %figure('Position',scrsz) figure(4) plot(t,pos_encoder,t,pos_mec_per_integral_vel_teorica) legend('Posição pelo encoder(rotações)','Posição pela integral da velocidade teórica(rotações)'); xlabel('tempo(s)') %DETERMINA A POSIÇÃO DO MECANISMO PERISTÁLTICO USANDO OS PULSOS DO ENCODER %EM COMBINAÇÃO COM A POSIÇÃO OBTIDA PELA INTEGRAÇÃO DA VELOCIDADE CALIBRADA vel_cal = vel_teorica_mec_per(1); pos_mec_per_encoder_e_integral_vel_teorica = pos_encoder; pos_mec_per_encoder_e_integral_vel_teorica(1)=pos_encoder(1); ind_erro_encoder_calib=1; erro_encoder_calibracao = zeros(1,TMR0(length(TMR0))); erro_calibracao = zeros(1,TMR0(length(TMR0))); t_erro_encoder_calibracao = zeros(1,TMR0(length(TMR0))); for i=2:length(t) vel_cal_ant = vel_cal; vel_cal = vel_teorica_mec_per(i); if(pos_encoder(i)==pos_encoder(i-1)) pos_mec_per_encoder_e_integral_vel_teorica(i) = pos_mec_per_encoder_e_integral_vel_teorica(i-1) + dt*(vel_cal+vel_cal_ant)/2;

Page 89: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

88

else pos_mec_per_encoder_e_integral_vel_teorica(i) = pos_encoder(i); erro_encoder_calibracao(ind_erro_encoder_calib) = 100*(pos_encoder(i) - (pos_mec_per_encoder_e_integral_vel_teorica(i-1) + dt*(vel_cal+vel_cal_ant)/2))/(1/26);% percentual erro_calibracao(ind_erro_encoder_calib) = 100*(pos_encoder(i) - pos_mec_per_integral_vel_teorica(i))/(1/26);% percentual t_erro_encoder_calibracao(ind_erro_encoder_calib) = t(i); ind_erro_encoder_calib = ind_erro_encoder_calib + 1; end end %figure('Position',scrsz) figure(5) plot(t,pos_encoder,t,pos_mec_per_encoder_e_integral_vel_teorica) legend('Posição pelo encoder(rotações)','Posição pelo encoder em combinação com a integral da velocidade teórica(rotações)'); xlabel('tempo(s)') erro1 = sum(erro_encoder_calibracao); sprintf('Erro1: %f',erro1) %figure('Position',scrsz) figure(6) plot(t_erro_encoder_calibracao,erro_calibracao,t_erro_encoder_calibracao,erro_encoder_calibracao) title('Erros percentuais utilizando a velocidade teórica'); legend('Sem zerar erros acumulados','Zerando erros acumulados'); xlabel('tempo(s)') %% MÉTODO 2 %PROCESSO DE CALIBRAÇÃO USANDO O MÉTODO DOS MÍNIMOS QUADRADOS n_trechos_mmq = 30; tam_trechos_mmq = floor(length(t)/n_trechos_mmq); for i=1:n_trechos_mmq lim_inf_int = 1+(i-1)*tam_trechos_mmq; lim_sup_int = i*tam_trechos_mmq; integral_vfcem = sum(dt*(vfcem(lim_inf_int:lim_sup_int-1) + vfcem(lim_inf_int+1:lim_sup_int))/2); X(i) = integral_vfcem/(t(lim_sup_int)-t(lim_inf_int)); Y(i) = (pos_encoder(lim_sup_int)-pos_encoder(lim_inf_int))/(t(lim_sup_int)-t(lim_inf_int)); end %figure('Position',scrsz) figure(7) plot(X,Y) title('X vs Y'); ylabel('Y'); xlabel('X'); n = length(X); a0 = (sum(X.^2)*sum(Y)-sum(X.*Y)*sum(X))/(n*sum(X.^2)-sum(X)^2); a1 = (n*sum(X.*Y)-sum(X)*sum(Y))/(n*sum(X.^2)-sum(X)^2); vel_calibrada_mec_per = a0 + a1*vfcem;%rps %INTEGRA O SINAL DE VELOCIDADE CALIBRADA NO MECANISMO PERISTÁLTICO PELO MÉTODO %DOS TRAPÉZIOS ENCONTRANDO A POSIÇÃO trapezios=dt*(vel_calibrada_mec_per(1:length(vel_calibrada_mec_per)-1)+vel_calibrada_mec_per(2:length(vel_calibrada_mec_per)))/2; trapezios2 = t*0; trapezios2(2:length(trapezios2)) = trapezios; pos_mec_per_integral_vel_calibrada = trapezios2;

Page 90: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

89

for i=2:length(t) pos_mec_per_integral_vel_calibrada(i) = pos_mec_per_integral_vel_calibrada(i-1) + trapezios2(i);%rotações end %figure('Position',scrsz) figure(8) plot(t,pos_encoder,t,pos_mec_per_integral_vel_calibrada) legend('Posição pelo encoder(rotações)','Posição pela integral da velocidade calibrada pelo MMQ(rotações)'); xlabel('tempo(s)') %DETERMINA A POSIÇÃO DO MECANISMO PERISTÁLTICO USANDO OS PULSOS DO ENCODER %EM COMBINAÇÃO COM A POSIÇÃO OBTIDA PELA INTEGRAÇÃO DA VELOCIDADE CALIBRADA %pelo MMQ vel_cal = vel_calibrada_mec_per(1); pos_mec_per_encoder_e_integral_vel_calibrada = pos_encoder; pos_mec_per_encoder_e_integral_vel_calibrada(1)=pos_encoder(1); ind_erro_encoder_calib=1; erro_encoder_calibracao = zeros(1,TMR0(length(TMR0))); erro_calibracao = zeros(1,TMR0(length(TMR0))); t_erro_encoder_calibracao = zeros(1,TMR0(length(TMR0))); for i=2:length(t) vel_cal_ant = vel_cal; vel_cal = vel_calibrada_mec_per(i); if(pos_encoder(i)==pos_encoder(i-1)) pos_mec_per_encoder_e_integral_vel_calibrada(i) = pos_mec_per_encoder_e_integral_vel_calibrada(i-1) + dt*(vel_cal+vel_cal_ant)/2; else pos_mec_per_encoder_e_integral_vel_calibrada(i) = pos_encoder(i); erro_encoder_calibracao(ind_erro_encoder_calib) = 100*(pos_encoder(i) - (pos_mec_per_encoder_e_integral_vel_calibrada(i-1) + dt*(vel_cal+vel_cal_ant)/2))/(1/26);% percentual erro_calibracao(ind_erro_encoder_calib) = 100*(pos_encoder(i) - pos_mec_per_integral_vel_calibrada(i))/(1/26);% percentual t_erro_encoder_calibracao(ind_erro_encoder_calib) = t(i); ind_erro_encoder_calib = ind_erro_encoder_calib + 1; end end %figure('Position',scrsz) figure(9) plot(t,pos_encoder,t,pos_mec_per_encoder_e_integral_vel_calibrada) legend('Posição pelo encoder(rotações)','Posição pelo encoder em combinação com a integral da velocidade calibrada pelo MMQ(rotações)'); xlabel('tempo(s)') erro = sum(erro_encoder_calibracao); sprintf('Erro2: %f',erro) %figure('Position',scrsz) figure(10) plot(t_erro_encoder_calibracao,erro_calibracao,t_erro_encoder_calibracao,erro_encoder_calibracao) title('Erros percentuais utilizando a velocidade calibrada pelo MMQ'); legend('Sem zerar erros acumulados','Zerando erros acumulados'); xlabel('tempo(s)') %% MÉTODO 3 %ENCONTRA CONSTANTES DE CALIBRAÇÃO DA MEDIÇÃO DE VELOCIDADE A PARTIR DA %FORÇA CONTRA-ELETROMOTRIZ DO MOTOR integral_vfcem=sum(dt*(vfcem(1:length(vfcem)-1)+vfcem(2:length(vfcem)))/2); k = (vfcem0*t(length(t))-integral_vfcem)/pos_encoder(length(pos_encoder));

Page 91: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

90

%ENCONTRA A VELOCIDADE DO MOTOR A PARTIR DAS CONSTANTES DE CALIBRAÇÃO vel_calibrada_mec_per = (vfcem0 - vfcem)/k;%rps %INTEGRA O SINAL DE VELOCIDADE CALIBRADA NO MECANISMO PERISTÁLTICO PELO MÉTODO %DOS TRAPÉZIOS ENCONTRANDO A POSIÇÃO trapezios=dt*(vel_calibrada_mec_per(1:length(vel_calibrada_mec_per)-1)+vel_calibrada_mec_per(2:length(vel_calibrada_mec_per)))/2; trapezios2 = t*0; trapezios2(2:length(trapezios2)) = trapezios; pos_mec_per_integral_vel_calibrada = trapezios2; for i=2:length(t) pos_mec_per_integral_vel_calibrada(i) = pos_mec_per_integral_vel_calibrada(i-1) + trapezios2(i);%rotações end %figure('Position',scrsz) figure(11) plot(t,pos_encoder,t,pos_mec_per_integral_vel_calibrada) legend('Posição pelo encoder(rotações)','Posição pela integral da velocidade calibrada(rotações)'); xlabel('tempo(s)') %DETERMINA A POSIÇÃO DO MECANISMO PERISTÁLTICO USANDO OS PULSOS DO ENCODER %EM COMBINAÇÃO COM A POSIÇÃO OBTIDA PELA INTEGRAÇÃO DA VELOCIDADE CALIBRADA vel_cal = vel_calibrada_mec_per(1); pos_mec_per_encoder_e_integral_vel_calibrada = pos_encoder; pos_mec_per_encoder_e_integral_vel_calibrada(1)=pos_encoder(1); ind_erro_encoder_calib=1; erro_encoder_calibracao = zeros(1,TMR0(length(TMR0))); erro_calibracao = zeros(1,TMR0(length(TMR0))); t_erro_encoder_calibracao = zeros(1,TMR0(length(TMR0))); for i=2:length(t) vel_cal_ant = vel_cal; vel_cal = vel_calibrada_mec_per(i); if(pos_encoder(i)==pos_encoder(i-1)) pos_mec_per_encoder_e_integral_vel_calibrada(i) = pos_mec_per_encoder_e_integral_vel_calibrada(i-1) + dt*(vel_cal+vel_cal_ant)/2; else pos_mec_per_encoder_e_integral_vel_calibrada(i) = pos_encoder(i); erro_encoder_calibracao(ind_erro_encoder_calib) = 100*(pos_encoder(i) - (pos_mec_per_encoder_e_integral_vel_calibrada(i-1) + dt*(vel_cal+vel_cal_ant)/2))/(1/26);% percentual erro_calibracao(ind_erro_encoder_calib) = 100*(pos_encoder(i) - pos_mec_per_integral_vel_calibrada(i))/(1/26);% percentual t_erro_encoder_calibracao(ind_erro_encoder_calib) = t(i); ind_erro_encoder_calib = ind_erro_encoder_calib + 1; end end %figure('Position',scrsz) figure(12) plot(t,pos_encoder,t,pos_mec_per_encoder_e_integral_vel_calibrada) legend('Posição pelo encoder(rotações)','Posição pelo encoder em combinação com a integral da velocidade calibrada(rotações)'); xlabel('tempo(s)') erro1 = sum(erro_encoder_calibracao); sprintf('Erro3: %f',erro1) %figure('Position',scrsz) figure(13) plot(t_erro_encoder_calibracao,erro_calibracao,t_erro_encoder_calibracao,erro_encoder_calibracao)

Page 92: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

91

title('Erros percentuais utilizando a velocidade calibrada pelo método alternativo'); legend('Sem zerar erros acumulados','Zerando erros acumulados'); xlabel('tempo(s)')

Page 93: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

92

Apêndice D – Programa MATLAB para

aquisição de dados do ensaio de controle

%INICIALIZAÇÃO clear all; close all; clc scrsz = get(0,'ScreenSize'); t_contr_des = 60;%s ta = 256*(256-150)/12000000; imax = floor(t_contr_des/ta)+1; pos = zeros(1,imax); pos_TMR0 = zeros(1,imax); pos_ref = zeros(1,imax); u = zeros(1,imax); t = zeros(1,imax); s = serial('COM4'); fopen(s); %Entra no programa de controle pelo computador fwrite(s,3); %Define velocidade de referência Q = 100;%mL/h vel_ref = Q/(0.2*3600); multiplicador_vel_ref = floor(vel_ref/0.001) vel_ref = multiplicador_vel_ref*0.001 Q = vel_ref*(0.2*3600) mh = floor(multiplicador_vel_ref/256) ml = mod(multiplicador_vel_ref,256) fwrite(s,[ml mh]) for i=1:imax t(i) = (i-1)*ta; [buff_com,n_bytes_lidos,msg] = fread(s,14); disp(msg); if n_bytes_lidos<14 disp('Tempo de amostragem excedido!\n'); break; else %converte do ponto flutuante do PIC para o do computador expoente = buff_com(1)-127; if(buff_com(2)>=128) sinal = -1; else sinal = 1; buff_com(2) = buff_com(2)+128; end pos(i) = sinal*(buff_com(2)*65536 + buff_com(3)*256 + buff_com(4))/(2^(23-expoente));

Page 94: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

93

pos_TMR0(i) = (buff_com(5) + buff_com(6)*256)/26; %converte do ponto flutuante do PIC para o do computador expoente = buff_com(7)-127; if(buff_com(8)>=128) sinal = -1; else sinal = 1; buff_com(8) = buff_com(8)+128; end pos_ref(i) = sinal*(buff_com(8)*65536 + buff_com(9)*256 + buff_com(10))/(2^(23-expoente)); %converte do ponto flutuante do PIC para o do computador expoente = buff_com(11)-127; if(buff_com(12)>=128) sinal = -1; else sinal = 1; buff_com(12) = buff_com(12)+128; end u(i) = sinal*(buff_com(12)*65536 + buff_com(13)*256 + buff_com(14))/(2^(23-expoente)); end end fwrite(s,1); fid = fopen('pos.bin','w'); fwrite(fid,pos,'float'); fclose(fid); fid = fopen('pos_TMR0.bin','w'); fwrite(fid,pos_TMR0,'float'); fclose(fid); fid = fopen('pos_ref.bin','w'); fwrite(fid,pos_ref,'float'); fclose(fid); fid = fopen('u.bin','w'); fwrite(fid,u,'float'); fclose(fid); fid = fopen('t.bin','w'); fwrite(fid,t,'float'); fclose(fid); fclose(s);

Page 95: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

94

Apêndice E – Programa MATLAB para análise

dos dados do ensaio de controle

%INICIALIZAÇÃO clear all; close all; clc scrsz = get(0,'ScreenSize'); %% CARREGA DADOS DO ENSAIO fid = fopen('pos.bin','r'); pos = fread(fid,'float'); fclose(fid); fid = fopen('pos_TMR0.bin','r'); pos_TMR0 = fread(fid,'float'); fclose(fid); fid = fopen('pos_ref.bin','r'); pos_ref = fread(fid,'float'); fclose(fid); fid = fopen('u.bin','r'); u = fread(fid,'float'); fclose(fid); fid = fopen('t.bin','r'); t = fread(fid,'float'); fclose(fid); %% %pos = pos_TMR0 + pos; figure(1) plot(t,pos_ref,t,pos) title('Ensaio de controle com vazão de referência de 99,36ml/h') legend('Posição de referência(rotações)','Posição medida(rotações)') xlabel('t(s))') figure(2) plot(t, pos_ref+pos_TMR0, t, pos+pos_TMR0) figure(3) plot(t,pos_ref-pos) title('Ensaio de controle com vazão de referência de 99,36ml/h') ylabel('Erro(rotações)') xlabel('t(s))') figure(4) plot(t,u) title('Ensaio de controle com vazão de referência de 99,36ml/h') ylabel('Sinal de controle (V)') xlabel('t(s))')

Page 96: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

95

figure(5) plot(t,pos_TMR0,t,pos+pos_TMR0)

Page 97: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

96

Apêndice F – Programa do microcontrolador

em C do compilador CCS

#include <18F4550.h> #device adc=10 #use delay(clock=48000000) #include <usb_cdc.h> //Remapeamento dos vetores de reset e interrupção devido à presença do bootloader //#build (reset=0x1100, interrupt=0x1108) //#org 0x0000, 0x10FF #FUSES MCLR,PLL3,CPUDIV2,USBDIV,HSPLL,PUT,BROWNOUT,BORV28,VREGEN,NOWDT,CCP2C1,NOLPT1OSC,STVREN,NOLVP,NOICPRT,NOXINST,NOPROTECT,NODEBUG,NOCPB,NOCPD,NOWRT,NOWRTC,NOWRTB,NOWRTD,NOEBTR,NOEBTRB #use fast_io(A) #use fast_io(B) #use fast_io(C) #use fast_io(D) #use fast_io(E) union int16_2int8 int16 var16; int var8[2]; ; union int32_4int8 int32 var32; int var8[4]; ; union float_4int8 float varfloat; int var8[4]; ; float a0 = 1.112846494373772; float a1 = -0.001105231613236; union float_4int8 k;// constante de calibração da medição de velocidade union int16_2int8 i100mA,i1A,vfcem,pressao;

Page 98: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

97

union int32_4int8 conta_ciclos; union int16_2int8 duty,buff_usb; int flags=0; int var_aux; //São definidas: //a variável de tempo utilizada para gerar uma rampa de tensão a fim de //executar a calibração considerando toda a faixa de velocidades float t; //a variável correpondente à tensão gerada pelo motor para velocidade nula union float_4int8 vfcem0; //a variável auxiliar para cálculo da integral da vfcem pelo método dos trapézios int16 vfcem_ant; //a variável que guarda a integral da vfcem union float_4int8 integral_vfcem; //a variável auxiliar para detecção do último pulso do encoder int TMR0L_ant; //a variável para salvar o valor final do TMR0 union int16_2int8 TMR0_final; int contador_tmr2; int TMR1H_salvo=0; #bit parar_controle = flags.0 #bit tempo_amostragem_excedido = flags.1 #bit flag_calibracao = flags.2 #byte TMR0L = 0x0FD6 #byte TMR0H = 0x0FD7 #byte TMR1L = 0x0FCE #byte TMR1H = 0x0FCF #byte TMR2 = 0x0FCC #byte PIR1 = 0X0F9E #bit TMR1IF = PIR1.0 #bit TMR2IF = PIR1.1 #define liga_led output_low(PIN_B0) #define desliga_led output_high(PIN_B0) #define VALOR_TMR1H_CALIBRACAO 210 //tempo de amostragem para calibração de (256-VALOR_TMR1H_CALIBRACAO)*256*(1/12MHz)=981,33333us #define VALOR_TMR1H_EXECUCAO 150 //tempo de amostragem para execução de (256-VALOR_TMR1H_EXECUCAO)*256*(1/12MHz)=981,33333us //#define VALOR_TMR1H_EXECUCAO 200 //tempo de amostragem para execução de (256-VALOR_TMR1H_EXECUCAO)*256*(1/12MHz)=0,0011946667s #define dt 0.00098133333333333333333333333333333333 #define dt_exec 0.00226133333333333333333333333333 //#define dt_exec 0.0011946667 #define duty_min 140 #define END_VFCEM0 0 //variável de duas posições na eeprom #define END_K 2 //variável de quatro posições na eeprom #INT_TIMER2 void trata_tmr2()

Page 99: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

98

contador_tmr2++; void pisca_led_erro(int n) int i; for(i=0;i<n;i++) liga_led; delay_ms(1000); desliga_led; delay_ms(1000); while(true) void calibracao() //São definidas: float t; int iter; //a variável para salvar o valor final do TMR0 union int16_2int8 TMR0_final; //a variável utilizada para representação do tempo para geração da rampa de entrada conta_ciclos.var32 = 0; parar_controle=0; vfcem_ant=2000; //o motor começa sem tensão em seus terminais TMR2IF = 0; set_pwm2_duty(1023); while(!TMR2IF)//garante que o duty seja zerado //em seguida é feita a leitura do valor da tensão na entrada analógica para velocidade nula do motor vfcem0.varfloat = 0; for(iter=0; iter<100; iter++) vfcem0.varfloat = vfcem0.varfloat + read_adc(); vfcem0.varfloat = vfcem0.varfloat/100; //o menor valor de duty cycle necessário para que o motor gire sem parar é carregado duty.var16 = duty_min; set_pwm2_duty(1023-duty.var16); //espera até que ocorra um pulso para iniciar a calibração while(!TMR0L) //mantém a conexão USB usb_task();

Page 100: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

99

if(!usb_enumerated()) pisca_led_erro(5); //o timer0, responsável pela contagem dos pulsos do encoder óptico de mouse, set_timer0(0); //o timer 1, responsável pela marcação precisa do tempo de amostragem, é zerado, set_timer1(0); //o flag de interrupção do timer1 é utilizado no mecanismo de marcação do tempo //tem nível lógico alto assim que passar o tempo de amostragem e começa zerado TMR1IF=0; //é atribuído à parte mais significativa do TMR1 o valor VALOR_TMR1H_CALIBRACAO que determina o //tempo de amostragem para calibração=(256-VALOR_TMR1H_CALIBRACAO)*256*(1/12MHz) //para a calibração foi utilizado VALOR_TMR1H_CALIBRACAO=210, resultando em um tempo //de amostragem de 0.0009813333333333s TMR1H=VALOR_TMR1H_CALIBRACAO; //o tempo inicial é 0 t=0; while(!parar_controle) set_adc_channel(0); //seleciona o canal de vfcem while(TMR2>230) //garante que o valor 1023(duty=0) seja carregado antes do overflow do TMR2 TMR2IF = 0; //zera o flag de interrupção do TMR2, que poderia estar setado set_pwm2_duty(1023); //abre o MOSFET para medição da tensão gerada pelo motor //há um inversor no caminho, por isso 1023 em vez de 0 while(!TMR2IF) //só passa quando o pwm for realmente zerado desliga_led; delay_us(200); //espera o tempo do transitório vfcem.var16 = read_adc();//le o sinal de tensão gerada pelo motor //desliga o sinal de indicação de trigger da tensão do motor liga_led; //volta às condições de operação normais do sinal PWM set_pwm2_duty(1023-duty.var16); //------------------------------------------------------------------------------------ //CALCULA A INTEGRAL DA VELOCIDADE PELO MÉTODO DOS TRAPÉZIOS if(vfcem_ant!=2000) integral_vfcem.varfloat = integral_vfcem.varfloat + dt*((float)(vfcem.var16 + vfcem_ant))/2; else integral_vfcem.varfloat = 0; vfcem_ant = vfcem.var16;

Page 101: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

100

//CALCULA E APLICA SINAL DE DUTY CYCLE DESEJADO---------------------------------------- //gera rampa duty.var16 = duty_min + t; //saturação if(duty.var16>1023) duty.var16 = 1023; set_pwm2_duty(1023-duty.var16); //----------------------------------------------------------------------------------- //ENVIA DADOS PELA SERIAL/USB------------------------------------------------------------- usb_cdc_putc(vfcem.var8[0]); usb_cdc_putc(vfcem.var8[1]); usb_cdc_putc(TMR0L); usb_cdc_putc(TMR0H); usb_cdc_putc(duty.var8[0]); usb_cdc_putc(duty.var8[1]); //------------------------------------------------------------------------------------- //termina a calibração depois de 120s assim que houver um novo pulso do encoder if(t<120) TMR0L_ant=TMR0L; else if(TMR0L!=TMR0L_ant) parar_controle=1; TMR0_final.var16 = get_timer0(); set_pwm2_duty(1023);//MOSFET abre //verifica se o tempo de amostragem foi excedido if(TMR1IF) parar_controle=1; //Espera o tempo de amostragem while(!TMR1IF) TMR1IF=0; TMR1H=VALOR_TMR1H_CALIBRACAO; //mantém a conexão USB usb_task();

Page 102: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

101

if(!usb_enumerated()) pisca_led_erro(5); conta_ciclos.var32++; t = ((float)conta_ciclos.var32)*dt; while(!usb_cdc_kbhit()) usb_cdc_getc(); //constante que relaciona a variação da tensão medida com a variação da velocidade k.varfloat = 26*(vfcem0.varfloat*((float)conta_ciclos.var32)*dt - integral_vfcem.varfloat)/((float)TMR0_final.var16); //Envia dados para cálculo da constante k no computador usb_cdc_putc(vfcem0.var8[0]); usb_cdc_putc(vfcem0.var8[1]); usb_cdc_putc(vfcem0.var8[2]); usb_cdc_putc(vfcem0.var8[3]); usb_cdc_putc(TMR0_final.var8[0]); usb_cdc_putc(TMR0_final.var8[1]); usb_cdc_putc(conta_ciclos.var8[0]); usb_cdc_putc(conta_ciclos.var8[1]); //Salva constantes na eeprom //write_eeprom(END_VFCEM0,vfcem0.var8[0]); //write_eeprom(END_VFCEM0+1,vfcem0.var8[1]); //write_eeprom(END_K,k.var8[0]); //write_eeprom(END_K+1,k.var8[1]); //write_eeprom(END_K+2,k.var8[2]); //write_eeprom(END_K+3,k.var8[3]); //Envia valores calculados ao computador para verificação da precisão usb_cdc_putc(integral_vfcem.var8[0]); usb_cdc_putc(integral_vfcem.var8[1]); usb_cdc_putc(integral_vfcem.var8[2]); usb_cdc_putc(integral_vfcem.var8[3]); usb_cdc_putc(k.var8[0]); usb_cdc_putc(k.var8[1]); usb_cdc_putc(k.var8[2]); usb_cdc_putc(k.var8[3]); void tcc(int opcao) //DECLARAÇÃO DE VARIÁVEIS int iter; int16 vfcem0, duty_aplicado,vfcem_ant=0,TMR0_ini; int32 conta_ciclos_inicial=0; //float Kp = 158.4, Ki = 240, Kd = 23.23, Tt = 0.311;

Page 103: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

102

float Kp = 1584, Ki = 24000, Kd = 23.23, Tt = 0.0311, Kc; float up=0, ui=0, ud=0, uds=0; float vel=0, vel_ant=0, vel_ref = 0.001; float erro=0, erro_ant=0, integrando=0, integrando_ant=0; float vel_ref_aux; union int16_2int8 TMR0_aux; union float_4int8 u, posicao, pos_ref; float integral_vfcem=0; pos_ref.varfloat = 0; posicao.varfloat = 0; u.varfloat = 0; vel_ref_aux = vel_ref; buff_usb.var8[0] = usb_cdc_getc(); buff_usb.var8[1] = usb_cdc_getc(); vel_ref = 0.001*((float)(256*buff_usb.var8[1]+buff_usb.var8[0])); Kp = Kp*1; Ki = Ki*1; Kd = Kd*1; //INICIAÇÃO DA VARIÁVEIS PARA O LOOP DE CONTROLE //Leitura das constantes de calibração da velocidade //A partir de valores previamente armazenados na eeprom //vfcem0.var8[0] = read_eeprom(END_VFCEM0); //vfcem0.var8[1]= read_eeprom(END_VFCEM0+1); //k.var8[0] = read_eeprom(END_K); //k.var8[1] = read_eeprom(END_K+1); //k.var8[2] = read_eeprom(END_K+2); //k.var8[3] = read_eeprom(END_K+3); //Ou, então,a partir da leitura da tensão para velocidade nula set_pwm2_duty(1023); set_adc_channel(0); //seleciona o canal de vfcem delay_ms(100); vfcem0 = read_adc(); iter=0; while(iter<10) if(vfcem0==read_adc()) iter++; else iter=0; vfcem0 = read_adc();

Page 104: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

103

//e de parâmetro de ensaio de calibração k.varfloat = 607.22; //valor resultante de ensaio de calibração 917.59 flag_calibracao=0; conta_ciclos.var32=0; set_timer0(0); TMR0L_ant = 0; set_timer1(0); TMR1IF=0; TMR1H=VALOR_TMR1H_EXECUCAO; parar_controle=0; t=0; duty.var16=0; //LAÇO DE CONTROLE while(!usb_cdc_kbhit()&&!parar_controle) //mantém conexão usb usb_task(); if(!usb_enumerated()) pisca_led_erro(5); set_adc_channel(0); //seleciona o canal de vfcem while(TMR2>230) //garante que o valor 1023(duty real=0) seja carregado antes do overflow do TMR2 TMR2IF = 0; set_pwm2_duty(1023); //abre o MOSFET para medição da tensão gerada pelo motor //há um inversor no caminho, por isso 1023 em vez de 0 while(!TMR2IF) //só passa quando o pwm for realmente zerado //liga o sinal de indicação de trigger da tensão do motor desliga_led; //inicializa contador do número de ciclos PWM usados para leitura do transitório da indutância contador_tmr2 = 0; //habilita contagem de ciclos PWM. A cada interrupção contador_tmr2 é incrementado. enable_interrupts(INT_TIMER2); //espera o tempo do transitório delay_us(80); vfcem_ant = vfcem.var16; //le tensão após o transitório vfcem.var16=read_adc(); //desliga o sinal de indicação de trigger da tensão do motor liga_led; //volta às condições de operação normais do sinal PWM set_pwm2_duty(1023-duty_aplicado);

Page 105: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

104

//desabilita a contagem de ciclos PWM disable_interrupts(INT_TIMER2); //mostra pelo LED o número de ciclo mínimo utilizado para leitura da vfcem //pisca_led_erro(contador_tmr2); //------------------------------------------------------------------------------------ integral_vfcem = integral_vfcem + 0.00113066666*((float)vfcem_ant + (float)vfcem.var16);//dt_exec/2 = 0.00113066666 //CALCULA POSIÇÃO PELO MÉTODO COMBINANDO ENCODER E FCEM------------------------------- vel_ant = vel; vel = ((float)vfcem0 - (float)vfcem.var16)/(k.varfloat); //vel = a0 + a1*(float)vfcem.var16; TMR0_aux.var16 = get_timer0(); if(TMR0_aux.var8[0]!=TMR0L_ant) posicao.varfloat = 0; pos_ref.varfloat = pos_ref.varfloat + vel_ref*dt_exec - 0.03846153846;//0.03846153846 = 1/26 if(TMR0_aux.var16 - TMR0_ini==26) k.varfloat = (float)vfcem0*(float)(conta_ciclos.var32-conta_ciclos_inicial)*dt_exec - integral_vfcem; flag_calibracao = 0; if(flag_calibracao) k.varfloat = 26*((float)vfcem0*(float)(conta_ciclos.var32-conta_ciclos_inicial)*dt_exec - integral_vfcem)/((float)(TMR0_aux.var16 - TMR0_ini)); else flag_calibracao=1; conta_ciclos_inicial=conta_ciclos.var32; integral_vfcem = 0; TMR0_ini = TMR0_aux.var16; else pos_ref.varfloat = pos_ref.varfloat + vel_ref*dt_exec; posicao.varfloat = posicao.varfloat + 0.00113066666*(vel + vel_ant);//dt_exec/2 = 0.00113066666 if(posicao.varfloat>=0.03846153846) posicao.varfloat = 0.03846153846;

Page 106: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

105

TMR0L_ant=TMR0_aux.var8[0]; //CALCULA E APLICA SINAL DE DUTY CYCLE DESEJADO---------------------------------------- t=(float)conta_ciclos.var32*dt_exec; conta_ciclos.var32++; if(((int)t)%2>0) liga_led; else desliga_led; switch(opcao) case 1: //teste da calibracão usb_cdc_putc(posicao.var8[0]); usb_cdc_putc(posicao.var8[1]); usb_cdc_putc(posicao.var8[2]); usb_cdc_putc(posicao.var8[3]); usb_cdc_putc(TMR0_aux.var8[0]); usb_cdc_putc(TMR0_aux.var8[1]); u.varfloat = 3 + 0.11666666*t; break; case 2: //resposta ao degrau usb_cdc_putc(posicao.var8[0]); usb_cdc_putc(posicao.var8[1]); usb_cdc_putc(posicao.var8[2]); usb_cdc_putc(posicao.var8[3]); usb_cdc_putc(TMR0_aux.var8[0]); usb_cdc_putc(TMR0_aux.var8[1]); usb_cdc_putc(vfcem.var8[0]); usb_cdc_putc(vfcem.var8[1]); if(t<1) u.varfloat = 0; else if(t<5) u.varfloat = 10; else if(t<8) u.varfloat = 5; else u.varfloat = 0; break; case 3: //Controle PID de posição //A entrada do controlador é o erro erro_ant = erro;

Page 107: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

106

erro = pos_ref.varfloat - posicao.varfloat; //sinal proporcional up = Kp*erro; //sinal integral com mecanismo de anti wind-up do tipo back calculation and tracking integrando_ant = integrando; integrando = Ki*erro + (uds-u.varfloat)/Tt; ui = ui + (integrando+integrando_ant)*0.00113066666;//dt_exec/2 = 0.00113066666; /* integrando_ant = integrando; integrando = Ki*erro; //integração condicional if((u.varfloat<10&&u.varfloat>0)||(u.varfloat>10&&erro<0)||(u.varfloat<0&&erro>0)) ui = ui + (integrando+integrando_ant)*0.00113066666;//dt_exec/2 = 0.00113066666; */ //sinal derivativo: erro = pos_ref - posicao; derivada do erro = derivada da pos_ref - derivada da posicao ud = Kd*(vel_ref - vel); u.varfloat = up + ui + ud; usb_cdc_putc(posicao.var8[0]); usb_cdc_putc(posicao.var8[1]); usb_cdc_putc(posicao.var8[2]); usb_cdc_putc(posicao.var8[3]); usb_cdc_putc(TMR0_aux.var8[0]); usb_cdc_putc(TMR0_aux.var8[1]); usb_cdc_putc(pos_ref.var8[0]); usb_cdc_putc(pos_ref.var8[1]); usb_cdc_putc(pos_ref.var8[2]); usb_cdc_putc(pos_ref.var8[3]); usb_cdc_putc(u.var8[0]); usb_cdc_putc(u.var8[1]); usb_cdc_putc(u.var8[2]); usb_cdc_putc(u.var8[3]); break; case 4: //Controlador PI de velocidade Kp = 11; Ki = 500; Kc = 3;

Page 108: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

107

Tt = 0.01; vel_ref_aux = vel_ref + Kc*(pos_ref.varfloat - posicao.varfloat); //A entrada do controlador é o erro erro_ant = erro; erro = vel_ref_aux - vel; //Sinal proporcional up = Kp*erro; //sinal integral com mecanismo de anti wind-up do tipo back calculation and tracking integrando_ant = integrando; integrando = Ki*erro + (uds-u.varfloat)/Tt; ui = ui + (integrando+integrando_ant)*0.00113066666;//dt_exec/2 = 0.00113066666; u.varfloat = up + ui; usb_cdc_putc(posicao.var8[0]); usb_cdc_putc(posicao.var8[1]); usb_cdc_putc(posicao.var8[2]); usb_cdc_putc(posicao.var8[3]); usb_cdc_putc(TMR0_aux.var8[0]); usb_cdc_putc(TMR0_aux.var8[1]); usb_cdc_putc(pos_ref.var8[0]); usb_cdc_putc(pos_ref.var8[1]); usb_cdc_putc(pos_ref.var8[2]); usb_cdc_putc(pos_ref.var8[3]); usb_cdc_putc(u.var8[0]); usb_cdc_putc(u.var8[1]); usb_cdc_putc(u.var8[2]); usb_cdc_putc(u.var8[3]); break; default: break; uds = u.varfloat; //saturação if(u.varfloat>10) uds = 10;//u depois da saturação if(u.varfloat<0) uds = 0;//u depois da saturação //u é dado em V. O código abaixo calcula o duty a ser aplicado //compensando o tempo perdido para leitura da vfcem //duty_real = duty_aplicado*(dt_exec-7*256/12000000)/dt_exec; //duty_real = 1023*u/12;

Page 109: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

108

duty_aplicado = (int16)((85.25*uds)*1.07070707);//(int16)(1023*uds/12)*(106/(106-7)) set_pwm2_duty(1023-duty_aplicado); //----------------------------------------------------------------------------------- TMR1H_salvo = TMR1H; //Espera o tempo de amostragem if(TMR1IF) parar_controle=1; while(!TMR1IF) TMR1IF=0; TMR1H=VALOR_TMR1H_EXECUCAO; set_pwm2_duty(1023);//MOSFET aberto usb_cdc_getc(); void main() setup_adc_ports(AN0_TO_AN5|VSS_VREF); setup_adc(ADC_CLOCK_DIV_64); setup_timer_0(RTCC_EXT_H_TO_L|RTCC_DIV_1); setup_timer_1((T1_INTERNAL|T1_DIV_BY_1)&0b01111111); setup_timer_2(T2_DIV_BY_1,255,1); SETUP_CCP1(CCP_OFF); SETUP_CCP2(CCP_PWM); set_pwm2_duty(1023);//MOSFET aberto usb_cdc_init(); usb_init(); //Determina a direção dos pinos de IO set_tris_a(0b11111111);//Entradas para medição de: velocidade por fcem(an0), corrente100mA(an1), corrente1A(an4), pressão(an5), encoder incremental(RA4) set_tris_b(0b11111110);//O PORTB apresenta a chave de bootloader em RB4, led; set_tris_c(0b11111101);//O pino RC1 será a saída do sinal PWM para o motor //RC3 não é implementado //RC5-D+, RC4-D- são usados apenas pelo módulo USB, então TRISC4,5 não são implementados, ou seja, tanto faz o valor desses bits set_tris_d(0b11111110); set_tris_e(0b00000111); while(!usb_cdc_connected()||!usb_enumerated()) while (TRUE) usb_task(); if (usb_enumerated())

Page 110: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

109

if(usb_cdc_kbhit()) buff_usb.var8[0] = usb_cdc_getc(); switch(buff_usb.var8[0]) case 0: calibracao(); break; case 1: tcc(1);//teste da calibracao break; case 2: tcc(2);//resposta ao degrau break; case 3: tcc(3);//controlador PID break; case 4: tcc(4);//controlador PID break; case 20: usb_cdc_putc(TMR1H_salvo); break; default: break; else pisca_led_erro(3);

Page 111: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

110

Anexo A – Características do motor DC 16N78-

212E

Page 112: Matheus Pilotto Fi gueiredo 2013 - biblioteca.ifsul.edu.brbiblioteca.ifsul.edu.br/pergamum/anexos_sql_hom81/... · Controle indireto de vazã medição de velocidade a partir da força

111

Anexo B – Características da redução R16