205
Universidade do Minho Escola de Engenharia Victor Manuel Oliveira da Silva Desenvolvimento de duas aplicações de controlo da velocidade de um motor de corrente contínua: Industrial e Pedagógica Tese para a obtenção do grau de Mestre em Engenharia Electrónica Industrial e Computadores Trabalho realizado sob a orientação de: Professora Dr.ª Filomena Soares Professora Dr.ª Rosa Vasconcelos Setembro de 2008

Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

  • Upload
    lynhan

  • View
    221

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Universidade do Minho

Escola de Engenharia

Victor Manuel Oliveira da Silva

Desenvolvimento de duas aplicações de controlo da velocidade de um motor de corrente contínua:

Industrial e Pedagógica

Tese para a obtenção do grau de Mestre em Engenharia Electrónica Industrial e Computadores

Trabalho realizado sob a orientação de:

Professora Dr.ª Filomena Soares Professora Dr.ª Rosa Vasconcelos

Setembro de 2008

Page 2: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

ii

Page 3: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

iii

Agradecimentos

A realização de todo este trabalho, só foi possível devido ao apoio incondicional de algumas

pessoas.

Não querendo esquecer ninguém, aqui ficam os meus agradecimentos:

§ Desejo agradecer aos meus orientadores à Dra. Filomena Soares e à Dra. Rosa

Vasconcelos, bem como ao Eng.º Vítor Carvalho por todo o acompanhamento e apoio

prestados ao longo deste trabalho.

§ Quero também agradecer, mencionando o importantíssimo trabalho prestado pelo Sr.

Carlos Torres e restantes funcionários das oficinas do Departamento de Electrónica

Industrial, que contribuíram para a realização das placas de circuito impresso.

§ A todos os que, de uma forma directa ou indirecta contribuíram para a finalização deste

trabalho, o meu “Muito Obrigado”.

Victor Silva

Page 4: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

iv

Page 5: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

v

Desenvolvimento de duas aplicações de controlo da velocidade de um motor de corrente contínua: industrial e pedagógica

Resumo

Neste trabalho foram desenvolvidas duas aplicações: uma de carácter industrial e outra de

carácter pedagógico. A realização deste trabalho teve como principal objectivo o controlo da

velocidade de um motor de corrente contínua, através da aplicação prática da teoria de controlo,

recorrendo à utilização de microcontroladores, tanto para a aplicação de carácter industrial como

para a aplicação de carácter pedagógico.

Relativamente à aplicação industrial, este trabalho está englobado num outro projecto de

investigação e desenvolvimento, intitulado “Medição de irregularidades e pilosidades no fio têxtil”

(Parametrização da qualidade do fio) e consistiu no desenvolvimento de um sistema de tracção

de fio para doze níveis de velocidade.

O sistema de tracção de fio têxtil utilizado no projecto onde esta dissertação se insere era

efectuado através de um motor de corrente contínua, no entanto, sem a implementação de um

algoritmo de controlo, ou seja em malha aberta. Deste modo, com este projecto de investigação

pretende-se implementar um algoritmo de controlo da velocidade de tracção do motor,

recorrendo à utilização de um microcontrolador.

Relativamente à aplicação de carácter pedagógico, de modo a que o presente trabalho de

investigação possa dar o seu contributo para a clarificação da implementação do processo de

controlo da velocidade de rotação de um motor, foi desenvolvido um equipamento para fins

didácticos, que possibilita definir o valor da velocidade de rotação pretendida, seleccionar

diferentes algoritmos de controlo PID, definir os parâmetros do controlador (Kp, Ki, Kd), bem

como, monitorizar os valores da velocidade de rotação do motor e do módulo do valor do erro do

sistema.

Page 6: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

vi

Page 7: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

vii

Development of two applications for velocity control of a DC motor: industrial and educational

Abstract

In this work were developed two applications for a DC motor speed control: an industrial

application and an educational application.

The development of this work has as main goal the velocity control of a DC motor, through the

practical application of control theory, using microcontrollers, for an industrial application as well

as for an educational application.

Concerning the industrial application, this work is part of another R&D project, entitled "Yarn

Irregularities and Hairiness Measurement" (Yarn quality parameterization) and consisted of the

development of a yarn traction system for twelve levels of velocity.

The yarn traction system where this dissertation is inserted is performed trough a DC motor,

however, without the implementation of a control algorithm, it works in open loop. With this

research project it is required to implement a control algorithm, using a microcontroller, for the

motor traction velocity.

Concerning the educational application and with the purpose that the present work could give a

contribution for the clarification of the process implementation of velocity control of a motor, it

was developed an equipment for teaching purposes, which allows setting up the desired value of

rotation speed, selecting different PID control algorithms, setting up the controller parameters

(Kp, Ki, Kd), as well as, monitoring the motor velocity values and the module system error value.

Page 8: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

viii

Page 9: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

ix

Índice Geral

AGRADECIMENTOS ...................................................................................................................... III RESUMO............................................................................................................................................. V ABSTRACT...................................................................................................................................... VII ÍNDICE GERAL................................................................................................................................IX ÍNDICE DE FIGURAS E TABELAS ................................................................................................XI INTRODUÇÃO....................................................................................................................................1 CAPITULO I 1. SUPORTE TEÓRICO......................................................................................................................3

1.1.TIPOS DE ENCODERS .....................................................................................................................3 1.1.1 Encoders Absolutos ..............................................................................................................3 1.1.2 Encoders incrementais..........................................................................................................3

1.2. MOTORES ELÉCTRICOS ................................................................................................................4 1.2.1. MOTORES DE CORRENTE CONTÍNUA ..........................................................................................5 1.2.1.1. MOTOR DE CC CONVENCIONAL ..............................................................................................5

1.2.1.2 Tipos de Excitação........................................................................................................... 11 1.2.1.2.1 Motor de Excitação Independente ................................................................................. 11 1.2.1.2.2 Motor de CC Série ........................................................................................................ 12 1.2.1.2.3 Motor de CC Shunt (Paralelo)....................................................................................... 12 1.2.1.1.1 Motor de CC Composto (Compound) ............................................................................ 13

1.2.1.2. MOTOR DE CC DE ÍMAN PERMANENTE .................................................................................. 14 1.2.1.3. MOTOR DE CC SEM NÚCLEO ................................................................................................. 15 1.2.1.4. MOTOR DE CC SEM ESCOVAS ............................................................................................... 17 1.2.2. MOTORES DE CORRENTE ALTERNADA (CA)............................................................................. 20

1.2.2.1. Motores Síncronos .......................................................................................................... 20 1.2.2.2. Motores Assíncronos....................................................................................................... 20 1.2.2.2.1. Motores de Indução Monofásico................................................................................... 22 1.2.2.2.2. Motores de Indução Trifásico....................................................................................... 23

1.2.3. MOTORES ESPECIAIS ............................................................................................................... 27 1.2.3.1. Servomotores.................................................................................................................. 27 1.2.3.1.1. Servomotores CC......................................................................................................... 27 1.2.3.1.2. Servomotores CA ......................................................................................................... 28 1.2.3.2. Motores de Passo-a-passo............................................................................................... 29

1.2.4. BINÁRIO ................................................................................................................................. 41 1.3. MICROCONTROLADOR................................................................................................................ 42 1.4. PWM (PULSE WIDTH MODULATION) ........................................................................................... 43 1.5. MOSFET................................................................................................................................... 44 1.6. CONTROLADORES ...................................................................................................................... 46

1.6.1 Controlo ON-OFF .............................................................................................................. 46 1.6.2. Controlo Proporcional....................................................................................................... 47 1.6.2.1 Erro em estado estacionário ............................................................................................ 48 1.6.3. Controlo PI ....................................................................................................................... 49 1.6.3.1 Erro em estado estacionário ............................................................................................ 50 1.6.3.2 Incapacidade de reagir à derivada do erro....................................................................... 50 1.6.4. Controlo PID..................................................................................................................... 51 1.6.4.1 Acção Diferencial (Análise Qualitativa) ........................................................................... 51 1.6.5. PID – Implementação Computacional................................................................................ 52 1.6.5.1 Discretização da expressão do controlador ...................................................................... 52 1.6.5.2 Termo proporcional......................................................................................................... 53 1.6.5.3 Termo Integral................................................................................................................. 53 1.6.5.4 Termo Derivativo............................................................................................................. 53 1.6.5.5 Controlador a 3 Termos................................................................................................... 54 1.6.5.6 Problemas de ruído.......................................................................................................... 54

Page 10: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

x

CAPITULO II 2. DESENVOLVIMENTO DO HARDWARE................................................................................... 55

2.1 Motor DC utilizado................................................................................................................ 55 2.2 Encoder utilizado .................................................................................................................. 56 2.3 Microcontrolador utilizado.................................................................................................... 57 2.4. Esquemas eléctricos ............................................................................................................. 59 2.4.1 Esquema eléctrico da placa de controlo para a aplicação industrial.................................... 59 2.4.3 Esquema eléctrico da placa de controlo para o módulo didáctico........................................ 61 2.5. Programação do microcontrolador....................................................................................... 63 2.5.1 Determinação do período mínimo de amostragem............................................................... 63 2.5.2 Considerações a ter para obtenção da velocidade pretendida.............................................. 64 2.5.3 Implementação do algoritmo de controlo PID..................................................................... 65

CAPITULO III 3. DESENVOLVIMENTO DO SOFTWARE DE INTERFACE ...................................................... 79

3.1 Software de interface para a placa de controlo industrial....................................................... 79 3.2 Software de interface para a placa do módulo didáctico......................................................... 80

CAPITULO IV 4. RESULTADOS OBTIDOS............................................................................................................. 81 CONCLUSÃO.................................................................................................................................... 83 BIBLIOGRAFIA................................................................................................................................ 85 ANEXO I - DOCUMENTAÇÃO TÉCNICA DOS COMPONENTES ANEXO II - PROGRAMA DO MICROCONTROLADOR RELATIVO À APLICAÇÃO INDUSTRIAL ANEXO III - PROGRAMA DO MICROCONTROLADOR RELATIVO À APLICAÇÃO PEDAGÓGICA

Page 11: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

xi

Índice de Figuras e Tabelas

FIGURA 1.1 – CONSTITUIÇÃO DO MOTOR DE CC (CORRENTE CONTÍNUA)...................................................5 FIGURA 1.2 – CONSTITUIÇÃO DO ROTOR DE UM MOTOR DE CC. ................................................................6 FIGURA 1.3 – CONSTITUIÇÃO DO MOTOR DE CORRENTE CONTÍNUA COM 2 PÓLOS. .....................................6 FIGURA 1.3 – CAMPO MAGNÉTICO DE UM CONDUTOR E DE UMA ESPIRA DO ROTOR. ...................................7 FIGURA 1.4 - CAMPO MAGNÉTICO DO ESTATOR E DO ROTOR DE UM MOTOR BIPOLAR. ................................7 FIGURA 1.5 - ALIMENTAÇÃO DOS ENROLAMENTOS DO ROTOR. .................................................................8 FIGURA 1.6 – REGRA ALIMENTAÇÃO DOS ENROLAMENTOS DO ROTOR. .....................................................8 FIGURA 1.7 - FORÇAS QUE ACTUAM SOBRE UMA ESPIRA. ..........................................................................9 FIGURA 1.8 - ESQUEMA DOS ENROLAMENTOS DE UM MOTOR DE CC. ...................................................... 10 FIGURA 1.9 - ESQUEMA DA LIGAÇÃO DOS ENROLAMENTOS DE UM MOTOR DE CC DE EXCITAÇÃO

INDEPENDENTE. ........................................................................................................................... 11 FIGURA 1.10 - ESQUEMA DA LIGAÇÃO DOS ENROLAMENTOS DE UM MOTOR DE CC DE EXCITAÇÃO SÉRIE. . 12 FIGURA 1.11 - ESQUEMA DA LIGAÇÃO DOS ENROLAMENTOS DE UM MOTOR DE CC DE EXCITAÇÃO

PARALELA (SHUNT). ..................................................................................................................... 13 FIGURA 1.12 - ESQUEMA DA LIGAÇÃO DOS ENROLAMENTOS DE UM MOTOR DE CC DE EXCITAÇÃO

COMPOSTA (COMPOUND).............................................................................................................. 13 FIGURA 1.13 - MOTORES DE CC DE ÍMAN PERMANENTE. ........................................................................ 14 FIGURA 1.14 - MOTORES DE CC DE ÍMAN PERMANENTE DE 5 PÓLOS. ...................................................... 15 FIGURA 1.15 – LIGAÇÃO DO MOTOR DE ÍMAN PERMANENTE. .................................................................. 15 FIGURA 1.16 - MOTORES DE CC SEM NÚCLEO. ....................................................................................... 16 FIGURA 1.17 - MOTORES DE CC COM ÍMAN PERMANENTE NO EXTERIOR DO ROTOR. ................................ 16 FIGURA 1.18 - CONSTITUIÇÃO DE UM MOTOR DE CC SEM ESCOVAS. ....................................................... 17 FIGURA 1.19 – ASPECTO DO ESTATOR DE UM MOTOR INDUSTRIAL DE CC SEM ESCOVAS. ......................... 18 FIGURA 1.20 - CIRCUITO DE COMANDO TÍPICO DE UM MOTOR BRUSHLESS COM TRÊS FASES. ..................... 19 FIGURA 1.21 – ROTOR EM GAIOLA DE ESQUILO. ..................................................................................... 21 FIGURA 1.22 – FLUXO MAGNÉTICO DO MOTOR DE INDUÇÃO MONOFÁSICO DE DOIS PÓLOS. ..................... 21 FIGURA 1.23 – MOTOR DE INDUÇÃO MONOFÁSICO. ................................................................................ 22 FIGURA 1.24 – ESQUEMAS DE LIGAÇÃO DO MOTOR DE INDUÇÃO MONOFÁSICO. ..................................... 23 FIGURA 1.25 – FUNCIONAMENTO DO CAMPO GIRANTE DO MOTOR DE INDUÇÃO TRIFÁSICO....................... 24 FIGURA 1.26 – ESQUEMAS DE LIGAÇÃO DO MOTOR DE INDUÇÃO TRIFÁSICO. ......................................... 25 FIGURA 1.27 – BINÁRIO E CORRENTE DE UM MOTOR DE INDUÇÃO TRIFÁSICO. ......................................... 26 FIGURA 1.28 – ASPECTO DE UM MOTOR DE PASSO-A-PASSO. ................................................................... 29 FIGURA 1.29 – MOTOR DE ÍMAN PERMANENTE....................................................................................... 30 FIGURA 1.30 – CONSTITUIÇÃO DO MOTOR DE ÍMAN PERMANENTE........................................................... 30 FIGURA 1.31 – ROTOR DO MOTOR DE ÍMAN PERMANENTE....................................................................... 30 TABELA 1.1 – SEQUÊNCIA DE ALIMENTAÇÃO DOS ENROLAMENTOS DO MOTOR DE ÍMAN PERMANENTE. .... 31 FIGURA 1.32 - FUNCIONAMENTO DO MOTOR DE ÍMAN PERMANENTE. ...................................................... 31 FIGURA 1.33 - MODELOS COMERCIAIS DE MOTORES DE RELUTÂNCIA VARIÁVEL...................................... 33 FIGURA 1.34 - ASPECTO INTERIOR DE UM MOTOR DE RELUTÂNCIA VARIÁVEL COM TRÊS FASES. ............... 33 TABELA 1.2 – SEQUÊNCIA DE ALIMENTAÇÃO DOS ENROLAMENTOS DO MOTOR DE RELUTÂNCIA VARIÁVEL.

................................................................................................................................................... 34 FIGURA 1.35 – FUNCIONAMENTO DO MOTOR DE RELUTÂNCIA VARIÁVEL. ............................................... 34 FIGURA 1.36 - MOTORES HÍBRIDOS COMERCIAIS. ................................................................................... 36 FIGURA 1.37 - CONSTITUIÇÃO DO MOTOR HÍBRIDO................................................................................. 36 FIGURA 1.38 – VISTA EM CORTE DO MOTOR HÍBRIDO. ............................................................................ 37 TABELA 1.3 – SEQUÊNCIA DE ALIMENTAÇÃO DOS ENROLAMENTOS DO MOTOR HÍBRIDO. ......................... 37 FIGURA 1.39 -FUNCIONAMENTO DO MOTOR HÍBRIDO. ............................................................................ 37 FIGURA 1.40 - DENTES DAS MASSAS POLARES SEPARADOS DE MEIO PASSO DE DENTE. ............................. 38 FIGURA1.41 - ENROLAMENTOS DO MOTOR COM ALIMENTAÇÃO UNIPOLAR.............................................. 39 FIGURA 1.42 – DISPOSIÇÃO DOS ENROLAMENTOS DE UM MOTOR COM ALIMENTAÇÃO BIPOLAR. ............... 40 FIGURA 1.43 – EVOLUÇÃO DO BINÁRIO DO MOTOR EM FUNÇÃO DA CARGA MECÂNICA............................. 42 FIGURA 1.44 – SINAL DE PWM PARA 0%, 25%, 50%, 75% E 100% DE DUTY-CYCLE. ............................... 43 FIGURA 1.45 – MOSFET DO TIPO MODO DE ENRIQUECIMENTO A) NÃO POLARIZADO; B) POLARIZADO. .... 45 FIGURA 1.46 – SÍMBOLOS GRÁFICOS DO EMOS A) N-MOSFET; B) P-MOSFET. ..................................... 45 FIGURA 1.47 – SINAL DE CONTROLO DO ALGORITMO ON-OFF. .............................................................. 46 FIGURA 1.48 – CONTROLADOR ON-OFF. .............................................................................................. 47 FIGURA 1.49 – COMPORTAMENTO DO CONTROLADOR ON-OFF COM HISTERESE. .................................... 47

Page 12: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

xii

FIGURA 1.50 – CONTROLADOR ON-OFF. .............................................................................................. 47 FIGURA 1.51 – COMPORTAMENTO DO ALGORITMO PROPORCIONAL. ........................................................ 48 FIGURA 1.52 – CONTROLADOR PROPORCIONAL. .................................................................................... 48 FIGURA 1.53 – CONTROLADOR PI.......................................................................................................... 49 FIGURA 1.54 – DERIVADA DO ERRO....................................................................................................... 50 FIGURA 1.55 – CONTROLADOR PID....................................................................................................... 51 FIGURA 1.56 – EVOLUÇÃO DO ERRO NUM CONTROLADOR PID................................................................ 52 FIGURA 2.1 – DIAGRAMA DE BLOCOS DO HARDWARE DESENVOLVIDO..................................................... 55 FIGURA 2.2 – ASPECTO DO MOTOR DC “MAXON RE36”........................................................................ 55 FIGURA 2.3 – CARACTERÍSTICAS TÉCNICAS DO MOTOR DC RE36 DA “MAXON”...................................... 56 FIGURA 2.4 – CURVA CARACTERÍSTICA DE FUNCIONAMENTO DO MOTOR RE36. ...................................... 56 FIGURA 2.5 – ASPECTO DO ENCODER HEDS-5540 A11 DA “HEWLETT PACKARD”. ................................. 56 TABELA 2.1 – CONDIÇÕES MÁXIMAS ADMISSÍVEIS DO ENCODER. ............................................................ 57 FIGURA 2.6 – APLICAÇÃO DE RESISTÊNCIAS DE PULL-UP NOS CANAIS DO ENCODER. ................................ 57 FIGURA 2.7 – PINOS DO MICROCONTROLADOR PIC16F876..................................................................... 58 FIGURA 2.8 – ESQUEMÁTICO DA PLACA DE CONTROLO DA VELOCIDADE DO MOTOR................................. 59 FIGURA 2.9 – CURVA CARACTERÍSTICAS DO MOSFET (BUZ100). ......................................................... 60 FIGURA 2.10 – ASPECTO DO PCB CONCEBIDO DA PLACA DE CONTROLO.................................................. 61 FIGURA 2.11 – ESQUEMÁTICO DA PLACA DO MÓDULO DIDÁCTICO. ......................................................... 62 FIGURA 2.12 – ASPECTO DO PCB CONCEBIDO DA PLACA DE CONTROLO.................................................. 62 FIGURA 2.13 – FREQUÊNCIA MÁXIMA DE AMOSTRAGEM OBTIDA. ........................................................... 63 FIGURA 2.14 – FLUXOGRAMA DO CÓDIGO FONTE DESENVOLVIDO PARA A PLACA DE CONTROLO. ............. 67 FIGURA 2.15 – FLUXOGRAMA DA ROTINA PARA A IMPLEMENTAÇÃO DO CONTROLO PID. ......................... 68 FIGURA 2.16 – FLUXOGRAMA DO CÓDIGO FONTE DESENVOLVIDO PARA O MÓDULO DIDÁCTICO. .............. 69 FIGURA 2.17 – FLUXOGRAMA DA ROTINA QUE SELECCIONA UM DOS ALGORITMOS DE CONTROLO PID. .... 70 FIGURA 2.18 – FLUXOGRAMA DA ROTINA PARA A IMPLEMENTAÇÃO DO ALGORITMO 1 DO CONTROLO PID.

................................................................................................................................................... 71 FIGURA 2.19 – FLUXOGRAMA DA ROTINA PARA A IMPLEMENTAÇÃO DO ALGORITMO 2 DO CONTROLO PID.

................................................................................................................................................... 72 FIGURA 2.20 – FLUXOGRAMA DA ROTINA PARA A IMPLEMENTAÇÃO DO ALGORITMO 3 DO CONTROLO PID.

................................................................................................................................................... 73 FIGURA 2.21 – FLUXOGRAMA DA ROTINA PARA A IMPLEMENTAÇÃO DO ALGORITMO 4 DO CONTROLO PID.

................................................................................................................................................... 74 FIGURA 2.22 – FLUXOGRAMA DA ROTINA RESPONSÁVEL PELO CÁLCULO DO ERRO ACTUAL DO SISTEMA. . 75 FIGURA 2.23 – FLUXOGRAMA DA ROTINA RESPONSÁVEL PELO CÁLCULO DO TERMO PROPORCIONAL. ....... 75 FIGURA 2.24 – FLUXOGRAMA DA ROTINA RESPONSÁVEL PELO CÁLCULO DO TERMO PROPORCIONAL_1. ... 75 FIGURA 2.25 – FLUXOGRAMA DA ROTINA RESPONSÁVEL PELO CÁLCULO DO TERMO INTEGRAL. ............... 76 FIGURA 2.26 – FLUXOGRAMA DA ROTINA RESPONSÁVEL PELO CÁLCULO DO TERMO INTEGRAL 1. ............ 76 FIGURA 2.27 – FLUXOGRAMA DA ROTINA RESPONSÁVEL PELO CÁLCULO DO TERMO INTEGRAL 2. ............ 77 FIGURA 2.28 – FLUXOGRAMA DA ROTINA RESPONSÁVEL PELO CÁLCULO DO TERMO INTEGRAL 3. ............ 77 FIGURA 2.29 – FLUXOGRAMA DA ROTINA RESPONSÁVEL PELO CÁLCULO DO TERMO DERIVATIVO. ........... 78 FIGURA 2.30 – FLUXOGRAMA DA ROTINA RESPONSÁVEL PELO CÁLCULO DO TERMO DERIVATIVO_1......... 78 FIGURA 3.1 – ASPECTO DA APLICAÇÃO DE INTERFACE PARA A PLACA DE CONTROLO INDUSTRIAL. ........... 79 FIGURA 3.2 – ASPECTO DA APLICAÇÃO DE INTERFACE PARA O MÓDULO DIDÁCTICO. ............................... 80 FIGURA 4.1 – IMAGEM DO EQUIPAMENTO DESENVOLVIDO PARA A TRACÇÃO DE FIO TÊXTIL (À ESQUERDA) E

DO MÓDULO DIDÁCTICO (Á DIREITA). ........................................................................................... 81

Page 13: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

1

Introdução

Neste capítulo apresenta-se a motivação e o enquadramento deste trabalho assim como a

definição de objectivos propostos e a estrutura do documento.

Motivação e enquadramento

Este trabalho está inserido num projecto de investigação e desenvolvimento, intitulado

“Medição de irregularidades e pilosidades no fio têxtil” (Parametrização da qualidade do fio). O

sistema de tracção de fio têxtil utilizado no projecto onde esta dissertação se insere era

efectuado através de um motor DC, funcionando em malha aberta, sem a implementação de um

algoritmo de controlo, para quatro níveis de velocidades. Deste modo, com este trabalho

pretende-se implementar um algoritmo de controlo da velocidade de tracção, recorrendo à

utilização de um microcontrolador.

Objectivos e desenvolvimento do trabalho

Este trabalho tem com principal objectivo a implementação dos algoritmos de controlo

recorrendo à utilização de microcontroladores. Foi desenvolvida uma aplicação industrial e em

paralelo, implementou-se uma aplicação de carácter pedagógico, cuja finalidade é dar o seu

contributo para a clarificação da implementação do processo de controlo da velocidade de

rotação de um motor.

Relativamente à aplicação industrial, implementou-se um algoritmo de controlo para a

velocidade de tracção do motor, recorrendo à utilização de um microcontrolador. Para além do

algoritmo de controlo também é desenvolvido o programa de controlo para 12 velocidades de

tracção de fio seleccionáveis por entradas digitais do microcontrolador. Os valores acordados

para esses níveis de velocidade foram os seguintes: 6m/min, 12m/min, 24m/min, 50m/min,

75m/min, 100m/min, 150m/min, 200m/min, 250m/min, 300m/m, 350m/min e 400m/min.

Para estabelecer os níveis de velocidade propostos, foi necessário ter em consideração o

diâmetro do rolo de tracção de fio, acoplado ao veio do motor, que neste caso possui 3.09cm de

diâmetro. A selecção destes níveis de velocidade é feita através de um programa desenvolvido

em LabVIEW que também possibilita ao utilizador monitorizar a velocidade de rotação do motor

bem como iniciar e finalizar o processo utilizando a porta paralela do PC.

Relativamente ao trabalho de âmbito pedagógico, foi desenvolvido um equipamento que

possibilita definir o valor da velocidade de rotação do motor pretendida, seleccionar diferentes

Page 14: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

2

algoritmos de controlo PID, definir os parâmetros do controlador (Kp, Ki, Kd), bem como,

monitorizar o valores da velocidade de rotação do motor e o módulo do valor do erro do sistema.

A ligação ao computador neste caso é estabelecida através da porta série, que obedece ao

protocolo de comunicação RS-232. Para a comunicação série foi definido um “Baude Rate” de

9600 bits/s, 8 bits de dados, paridade par e um “Stop Bit”.

Para interface deste equipamento para com o utilizador, foi desenvolvida uma outra aplicação

em LabVIEW.

Estrutura da dissertação

Este documento está dividido em seis partes. A primeira parte é relativa à Introdução e são

apresentados os objectivos e o enquadramento do trabalho. Na segunda parte são abordados os

conceitos teóricos necessários à implementação do trabalho. Na terceira e quarta partes,

respectivamente, é elaborada uma descrição pormenorizada sobre a implementação prática do

hardware e do software de interface, relativo aos equipamentos industrial e pedagógico

desenvolvido. Os resultados obtidos são apresentados na parte cinco e as conclusões na última

parte.

Page 15: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

3

Capitulo I

1. Suporte Teórico

Neste capítulo são abordados conceitos e noções básicas de elementos e processos utilizados

ao longo deste trabalho.

1.1.Tipos de Encoders

Actualmente no mercado existem fundamentalmente dois tipos de encoders:

Ø Encoders absolutos;

Ø Encoders incrementais.

1.1.1 Encoders Absolutos

A principal diferença dos encoders absolutos em relação aos encoders incrementais é que as

posições dos discos dos encoders absolutos já estão codificadas em binário, variando entre 8,

10, 12, 16 bits.

O sistema binário é codificado em código Gray, ou binário puro.

Não necessita de referência ou zero, pois o sistema lê a posição directamente em binário.

Como vantagem tem o facto de não necessitar de referência, pois o sistema reconhece a

posição imediatamente actual após a sua inicialização.

Como desvantagens tem o seu custo elevado e a sua dimensão.

1.1.2 Encoders incrementais

São discos perfurados ou com ranhuras, igualmente distribuídas pela sua circunferência,

normalmente dividindo-o em 100, 360, 500, 720, 1000 ou mais partes iguais e uma perfuração

de referência chamada de "zero" do encoder. Possuem um sensor óptico, que lê as ranhuras.

Os encoders são normalmente alimentados de 5 a 30VDC.

Como vantagem o encoder incremental tem o facto de a sua construção ser simples e

compacta.

Apresenta como desvantagem, o facto de que, quando alimentado, o sistema de controlo que

o lê, deve girar o eixo até a posição de referência, e a partir daí determina sua a posição, pois a

posição é contada a partir da referência.

Page 16: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

4

Existem encoders incrementais de forma Linear, também conhecidos como “Transdutores

ópticos lineares”, que são usados no lugar das réguas potenciómetricas. Para além da detecção

da posição angular de eixos, podem também ser usados como sensores para tacómetros e

qualquer medição angular ou linear.

1.2. Motores Eléctricos

No mundo de hoje, o motor eléctrico é um elemento imprescindível ao progresso. As

máquinas eléctricas, nos tempos actuais, podem-se considerar como parte recorrente do nosso

dia-a-dia. O motor eléctrico é o mais usado de todos os tipos de motores, pois combina as

vantagens da utilização da energia eléctrica: facilidade de transporte e facilidade de comando,

sendo, para além disso trata-se de uma máquina de construção simples, alto rendimento e baixo

custo.

Os motores eléctricos possuem praticamente os mesmos elementos principais, contudo com

diferenças importantes entre eles. Em alguns casos a bobina da armadura está no estator e não

no rotor, o mesmo acontece com a bobina de campo. Outros não possuem escovas, outros

ainda não possuem bobina de armadura, e assim por diante. Porém, os nomes dados aos

componentes da máquina são gerais e valem para a maioria das máquinas eléctricas.

De forma geral os motores eléctricos são classificados como:

Ø Motores de Corrente Contínua

§ Motor de CC Convencional;

§ Motor de CC de Íman Permanente;

§ Motor de CC sem Núcleo;

§ Motor de CC sem Escovas (Brushless).

Ø Motores de Corrente Alternada

§ Motores Síncronos;

§ Motores Assíncronos.

Ø Motores Especiais

§ Servomotores;

§ Motores de Passo.

Todos os motores apresentam as suas principais características eléctricas escritas sobre o

mesmo ou numa placa de identificação. Os principais dados eléctricos são: tipo de motor,

Page 17: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

5

tensão nominal, corrente nominal, frequência, potência mecânica, velocidade nominal, esquema

de ligação, grau de protecção, temperatura máxima de funcionamento e factor de potência.

1.2.1. Motores de Corrente Contínua

O motor de CC (corrente contínua) foi a primeira máquina eléctrica a ser utilizada

industrialmente. A principal razão para tal deve-se ao facto de no início da distribuição da

eléctrica, a mesma ser feita em corrente contínua.

Actualmente, existem diferentes tipos de motores de corrente contínua, vão desde os

pequenos motores, para os mais variados accionamentos, até aos motores convencionais,

utilizados em accionamentos industriais, com potências que podem chegar às várias centenas

de KW (Kilowatts).

1.2.1.1. Motor de CC Convencional

O motor de CC (corrente contínua) convencional representado na figura 1 é uma máquina que

tem como principal característica o controlo preciso, entre amplos limites, da velocidade.

Actualmente, a sua regulação é feita recorrendo a controladores electrónicos.

Figura 1.1 – Constituição do motor de CC (corrente contínua).

Uma máquina eléctrica rotativa é constituída, fundamentalmente, por duas partes distintas,

uma que se designa de indutor e outra de induzido.

No indutor, também designado por campo, é gerado o campo magnético, e no induzido

também denominado por armadura, processam-se fenómenos electromagnéticos. Uma das

partes é fixa e a outra é móvel. À parte fixa dá-se o nome de estator e à parte móvel, de rotor

representado na figura 1.2.

Page 18: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

6

Figura 1.2 – Constituição do rotor de um motor de CC.

Nas máquinas convencionais de corrente contínua, o circuito indutor encontra-se no estator e

o circuito induzido, no rotor. Esta disposição não é igual em todas as máquinas.

Na figura 1.3 é possível identificar as diferentes partes internas de um máquina de corrente

contínua básica, bem como a sua representação eléctrica.

(a) Partes internas. (b) Representação eléctrica.

Figura 1.3 – Constituição do motor de corrente contínua com 2 Pólos.

O motor de corrente contínua apresenta quatro terminais acessíveis, dois para as bobinas de

campo (terminais 3 e 4) e dois para as bobinas da armadura (terminais 1 e 2). Em alguns

motores de baixa potência, as bobinas de campo são substituídas por ímãs permanentes. Neste

caso, o motor apresenta apenas dois terminais de acesso (terminais 1 e 2).

O princípio de funcionamento elementar de um motor de corrente contínua está baseado na

força mecânica que actua sobre um condutor imerso num campo magnético, quando sobre ele

circula uma corrente eléctrica. O motor de CC gira em consequência da interacção do campo

magnético do estator com o campo magnético do rotor.

O campo principal, o do estator, é criado pelos seus enrolamentos (electroímanes), quando

são percorridos por corrente. O segundo campo, o do rotor, é criado pela circulação da corrente

nos condutores dos enrolamentos do rotor. Cada condutor do rotor contribui com um campo

magnético que roda à sua volta e cujo sentido é determinado pela regra do saca-rolhas.

Page 19: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

7

Figura 1.3 – Campo magnético de um condutor e de uma espira do rotor.

Os vários campos magnéticos dos condutores do rotor, alimentados num lado por uma escova

e no outro lado por outra escova, têm como resultante um pólo N e um pólo S, em lados opostos

do núcleo do rotor, representados na figura 1.4.

Figura 1.4 - Campo magnético do estator e do rotor de um motor bipolar.

Analisando a figura verifica-se que o pólo S do rotor neste caso, localizado na parte superior,

será atraído pelo pólo N do estator e o pólo N do rotor, pelo pólo S do estator.

Esta atracção exerce uma força continuada sobre o rotor, provocando a sua rotação.

O rotor roda uma vez que os enrolamentos vão sendo sucessivamente alimentados, uma vez

que estão ligados a pares de lâminas sucessivas do colector.

Apesar do rotor estar permanentemente em movimento, o seu campo magnético resultante

permanece fixo, tal como está representado na figura 1.4, o pólo S na parte de cima e pólo N na

parte de baixo.

A disposição das escovas assegura a correcta alimentação dos enrolamentos do rotor. Os

condutores que estão situados sob um mesmo pólo do estator são percorridos por correntes

com o mesmo sentido.

Page 20: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

8

Figura 1.5 - Alimentação dos enrolamentos do rotor.

O binário do motor será tanto maior quanto maiores forem as forças de atracção e repulsão

entre os campos magnéticos do estator e do rotor.

De modo a se compreender melhor os fenómenos até agora descritos recorre-se aos

seguintes princípios:

Lei de Laplace

Sempre que um condutor de comprimento l é percorrido por uma corrente eléctrica I está sob

a acção de um campo magnético de indução B, exerce-se sobre ele uma força F que o faz

movimentar; num determinado sentido, perpendicularmente ao plano definido pelo sentido da

corrente I e pelo sentido da indução B.

lIBF ××= (eq. 1.1)

Regra dos Três Dedos da Mão Direita

O sentido da força electromagnética (F) exercida sobre o condutor é obtido, fazendo coincidir

três dedos da mão direita, formando entre si ângulos de 90º, com a direcção e sentido das

grandezas.

Figura 1.6 – Regra Alimentação dos enrolamentos do rotor.

Page 21: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

9

Regra do Saca-Rolhas

O sentido das linhas de força do campo magnético produzido pela corrente eléctrica é aquele

que corresponde à rotação de um saca-rolhas, de modo que a sua progressão corresponda ao

sentido da corrente eléctrica.

A figura 1.7 mostra o sentido da força electromagnética (F) que actua sobre uma espira quando

a mesma é percorrida por uma corrente (I) e é submetida a um campo magnético (B).

Sob a acção da força, a espira movimenta-se para a posição vertical, onde a força resultante é

nula, não dando continuidade ao movimento. Para que a espira rode, torna-se então necessária

a inversão do sentido da corrente que a atravessa. Essa inversão é efectuada pelo colector

quando a espira atinge a posição vertical.

Assim, e recorrendo à regra dos três dedos da mão direita, como o sentido da corrente se

inverte, o sentido da força também se inverte. O campo tem sempre o mesmo sentido e a espira

roda continuamente.

Figura 1.7 - Forças que actuam sobre uma espira.

Também se pode afirmar que o funcionamento de um motor de corrente contínua tem como

base as forças resultantes da interacção do campo magnético gerado no indutor com a corrente

que circula no induzido. Desta interacção resulta uma força (lei de Laplace) que faz mover o

rotor num sentido que depende do sentido do campo magnético do indutor e do sentido da

corrente do induzido (regra da mão direita), Explicação idêntica à anterior, uma vez que a

corrente que circula nos condutores induzido cria o campo magnético que serviu de fundamento

à explicação através da interacção entre os campos magnéticos do estator e do rotor.

Page 22: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

10

Reacção Magnética do Induzido

A corrente que percorre o induzido cria um campo magnético que, ao interagir com o campo

magnético indutor, altera as linhas de força deste, distorcendo-o tratando-se da reacção

magnética do induzido. Esta distorção é proporcional à carga a que o motor está sujeito e

provoca o aparecimento de faíscas entre o colector e as escovas, sendo por isso prejudicial para

a máquina, uma vez que degrada mais rapidamente as escovas e o colector. De modo a reduzir

ou anular este efeito, as escovas têm de ser deslocadas para outra posição, todavia, como o

ângulo de deslocação depende da carga aplicada ao motor, este processo não é viável, daí o

facto dos motores de CC possuírem pólos de comutação auxiliares ou enrolamento de

compensação cuja finalidade é criarem um campo magnético de sentido contrário ao campo da

reacção magnética do induzido, reduzindo ou anulando-o.

Na figura 1.8 apresenta-se, esquematicamente, os enrolamentos de um motor de CC. A não

referência ao enrolamento derivação E1-E2 deve-se ao facto de se poder utilizar o enrolamento

independente F1-F2 como substituição.

Figura 1.8 - Esquema dos enrolamentos de um motor de CC.

Os motores de CC inicialmente eram alimentados por geradores de corrente contínua, o que

exigia o uso de três máquinas (sistema Ward-Leonard). Actualmente, utilizam-se conversores

estáticos que fornecem tensão contínua variável a partir da rede eléctrica.

Para se proceder ao arranque do motor, em vazio, aplica-se, em primeiro lugar, tensão ao

campo e de seguida à armadura. O motor deve arrancar de forma suave, sem faiscamento ou

ruídos excessivos.

Motores pequenos, até l kW, podem arrancar à tensão plena. Acima deste valor devem possuir

um sistema de arranque que limite a corrente, pois esta pode danificar o colector.

Page 23: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

11

A rotação do motor pode ser regulada mantendo o fluxo indutor constante e variando a tensão

de alimentação do induzido (controlo pela armadura), ou mantendo a tensão de alimentação do

induzido fixa e alterando o fluxo indutor (controlo pelo campo).

Para se parar o motor é necessário desligar primeiro a armadura e só depois o campo, caso

contrário, existe o risco de perda do controlo do motor, em função do disparo do rotor por falta

de campo.

Para se inverter o sentido de rotação, troca-se a polaridade da tensão de alimentação do

induzido ou do indutor (não ambas).

1.2.1.2 Tipos de Excitação

Os motores de CC são divididos de acordo com o tipo de ligação entre as bobinas do rotor e

do estator.

A cada tipo de ligação corresponde um tipo de motor associado ao tipo de excitação

magnética. A classificação é a seguinte:

(Composto) CompondMotor (Paralelo)Shunt Motor

SérieMotor açãoAuto-excit

teindependenExcitação

1.2.1.2.1 Motor de Excitação Independente

Neste tipo de ligação, o motor necessita de duas fontes de alimentação; uma para alimentar o

indutor e outra para alimentar o induzido. Apesar desta desvantagem, este tipo de excitação

possibilita o controlo da velocidade de forma independente, através da armadura e do campo.

Rotação horária: Rotação anti-horária:

Figura 1.9 - Esquema da ligação dos enrolamentos de um motor de CC de excitação independente.

Page 24: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

12

1.2.1.2.2 Motor de CC Série

O motor série é um motor com auto-excitação. Como o seu nome indica, o

enrolamento do indutor e do induzido estão ligados em série, por isso, são

percorridos pela mesma corrente. Este motor necessita de uma só tensão de

alimentação. O motor série tem o enrolamento do indutor formado por fio de secção

elevada e com poucas espiras. Esta constituição tem por finalidade baixar a

resistência do indutor, uma vez que está em série com o induzido.

Rotação horária: Rotação anti-horária:

Figura 1.10 - Esquema da ligação dos enrolamentos de um motor de CC de excitação série.

No motor série, o binário é proporcional ao quadrado da corrente. Portanto, o motor série pode

trabalhar em situações de sobrecarga mecânica, mantendo um consumo de corrente

relativamente moderado. Devido a esta característica, o motor série é com frequência em

tracção eléctrica.

Este tipo de motor possui um elevado binário de arranque e, sem carga, uma velocidade

relativamente elevada. A regulação da velocidade é um pouco difícil.

1.2.1.2.3 Motor de CC Shunt (Paralelo)

Neste motor, o enrolamento do indutor é ligado em paralelo com o enrolamento do induzido.

No motor Shunt, o enrolamento indutor é formado por um elevado número de espiras de fio de

pequena secção, sendo a resistência deste enrolamento elevada para que a corrente consumida

seja baixa.

Page 25: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

13

Rotação horária: Rotação anti-horária:

Figura 1.11 - Esquema da ligação dos enrolamentos de um motor de CC de excitação paralela (shunt).

No caso da máquina não possuir na sua constituição o enrolamento shunt, utiliza-se para sua

substituição, nesta ligação, o enrolamento independente F1-F2.

O motor shunt possui a particularidade da sua velocidade variar pouco com a carga, daí,

apresentar uma boa regulação da mesma. O seu binário de arranque é menor que o do motor

série.

1.2.1.1.1 Motor de CC Composto (Compound)

Este motor possui dois enrolamentos indutores. Um está ligado em série e o outro em

paralelo com o induzido, normalmente o enrolamento independente.

O enrolamento ligado em série é o que apresenta menor resistência. Na maioria das

situações, os dois enrolamentos são acoplados de forma que os fluxos magnéticos se

adicionem.

Rotação horária: Rotação anti-horária:

Figura 1.12 - Esquema da ligação dos enrolamentos de um motor de CC de excitação composta (Compound).

Page 26: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

14

O motor de CC composto reúne as qualidades do motor série e do motor shunt, é por isso um

motor com um elevado binário de arranque e uma boa regulação de velocidade.

Os motores de corrente contínua têm vindo a perder terreno relativamente aos motores de

indução. A sua grande vantagem que era a facilidade na regulação de velocidade, nos dias

actuais está facilmente ao alcance dos motores de indução com o controlo electrónico de

velocidade.

O preço dos motores de corrente contínua também é bem mais elevado que o dos motores de

indução e como possuem colector e escovas, órgãos sujeitos a desgaste, a sua manutenção é

mais frequente. Apesar disso, o motor de corrente contínua mantém a sua utilização dadas as

suas características específicas.

O desenvolvimento dos motores de CC sem escovas (Brushless) e a sua utilização em

accionamentos industriais também tem contribuído para a diminuição do uso do motor de CC

convencionais.

1.2.1.2. Motor de CC de Íman Permanente

O motor de íman permanente (Permanent Magnet DC Motor) é normalmente fabricado para

pequenas potências. O seu rotor possui uma constituição idêntica ao do motor de CC

convencional, sendo o seu estator significativamente diferente, uma vez que não possui qualquer

enrolamento. O campo magnético indutor é criado por ímans permanentes.

Figura 1.13 - Motores de CC de íman permanente.

O indutor é constituído por dois ou mais ímans permanentes, sendo o induzido constituído por

um núcleo ferromagnético, tipicamente, com três, cinco ou sete pólos e respectivos

enrolamentos. A carcaça do motor completa o circuito magnético.

Page 27: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

15

Figura 1.14 - Motores de CC de íman permanente de 5 pólos.

O funcionamento do motor de íman permanente é igual ao do motor de CC convencional, a

diferença está na forma de como se gera o campo magnético do indutor. Em vez de ser gerado

pela corrente eléctrica, como é o caso dos motores de CC convencionais, é gerado através dos

ímans permanentes. Não possuindo estes motores enrolamentos no indutor, para a sua

alimentação basta ligar os dois condutores que ligam os enrolamentos do induzido, através do

conjunto escovas/colector.

Figura 1.15 – Ligação do motor de íman permanente.

Alimentando o motor, ele roda num determinado sentido. Invertendo a polaridade da tensão de

alimentação, ele roda em sentido contrário. Aumentando ou diminuindo a tensão de

alimentação, a velocidade do motor aumenta ou diminui, respectivamente.

Este tipo de motor é de fácil construção e por isso têm um custo baixo. São utilizados em

accionamentos de baixa potência, nomeadamente em electrodomésticos, carros eléctricos,

comboios eléctricos entre outros.

1.2.1.3. Motor de CC sem Núcleo

O motor de CC sem núcleo (Coreless DC Motor) é assim designado porque o rotor não possui

ferro no núcleo, não é, portanto, magnético.

Este motor destina-se, tipicamente, a accionamentos de pequena potência.

Page 28: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

16

Figura 1.16 - Motores de CC sem núcleo.

Este tipo de motor não possui núcleo magnético, o seu rotor é formado apenas pelas bobinas,

sendo estas, geralmente, auto-suportadas num invólucro de fibra de vidro de forma a constituir

uma estrutura rígida. O rotor é oco com a finalidade de se tornar mais leve e ágil.

O estator é constituído por íman permanente, podendo o mesmo ser colocado no exterior ou

interior do rotor. O conjunto é alojado na carcaça do motor que completa o circuito magnético.

Figura 1.17 - Motores de CC com íman permanente no exterior do rotor.

O princípio de funcionamento deste tipo de motor é igual ao do motor de CC convencional. A

diferença, tal como no motor de íman permanente, está na forma como o campo magnético do

estator é gerado. Em vez de ser gerado pela corrente eléctrica, como é nos casos dos motores

de CC convencionais, é gerado por íman permanente. Como estes motores não possuem

enrolamentos no estator, para a sua alimentação basta ligar os dois condutores que ligam os

enrolamentos do rotor, através do conjunto escovas/colector.

Estes motores são bastante mais rápidos que os motores de CC com núcleo de ferro.

O rotor tem uma baixa inércia, o que possibilita arranques, paragens e variações de velocidade

muito rápidas, assim como mudança de sentido de rotação num curto espaço de tempo.

Comparativamente com o motor de íman equivalente, este tipo de motor possui um conjunto

escovas/colector de menor dimensão e de melhor qualidade, estando, por isso, estes órgãos

sujeitos a menos desgaste. Também o ruído eléctrico é menor, a velocidade mais suave e a

indutância mais baixa devido à não existência de ferro no núcleo.

Page 29: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

17

A desvantagem do motor sem núcleo (Coreless) é o seu reduzido binário, pois como o fluxo

magnético, não é o rotor magnético, não é concentrado e tem de atravessar um entreferro

maior.

Também possuem baixa refrigeração. O calor gerado nas espiras do rotor, dado que o motor

não possui núcleo de ferro, que dissipa grande parte do calor, quando o mesmo é sujeito a um

esforço, aquece rapidamente e pode danificar-se. Os motores Coreless também são mais

frágeis. Nos motores com íman no interior do rotor, a abertura entre o íman permanente e a

carcaça é muito pequena, por isso, as espiras do rotor estão sujeitas a uma densidade de fluxo

elevada, o que se traduz num motor mais eficiente.

Este tipo de motor destina a accionamentos onde se pretenda um arranque rápido e

velocidades elevadas. São utilizados com muita frequência em equipamentos de modelismo,

actualmente equipando a nova geração dos servomotores de radiocomando.

1.2.1.4. Motor de CC sem Escovas

O motor de CC sem escovas (Brushless DC Motor) é uma máquina eléctrica em que a

operação de comutação, realizada mecanicamente pelo colector no motor de CC, é aqui

efectuada por um comutador electrónico, daí este tipo de motor não possuir colector nem

escovas.

Este tipo de motor possui um rotor com ímans permanentes, que podem estar colocados no

interior ou no exterior do estator, e um estator de material ferromagnético com os respectivos

enrolamentos. Esta configuração, relativamente ao motor de íman permanente, está invertida.

Figura 1.18 - Constituição de um motor de CC sem escovas.

O estator de um motor de CC sem escovas, para accionamentos industriais, é constituído por

lâminas de chapa de aço empilhadas, com os enrolamentos colocados nos entalhes e dispostos

Page 30: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

18

axialmente na periferia interna, tal como está representado na figura 1.19. O estator assemelha-

se ao de um motor de indução, contudo, os enrolamentos são distribuídos deforma diferente.

Os sensores indicados na figura 1.18 detectam o campo magnético, são de efeito Hall, ou seja

estando na presença de um campo magnético geram aos seus terminais uma tensão eléctrica,

de modos a informar neste caso o controlador electrónico sobre a posição dos pólos do rotor.

Figura 1.19 – Aspecto do estator de um motor industrial de CC sem escovas.

Tipicamente, os motores industriais de CC sem escovas têm enrolamentos de três fases

ligadas em estrela, sendo cada fase constituída por várias bobinas e respectivos pólos

magnéticos. O rotor de um motor de CC sem escovas é constituído por íman permanente e pode

possuir vários pares do pólo, alternadamente N-S.

Ao contrário de um motor de CC com escovas, a comutação do motor sem escovas é realizada

electronicamente. Para que o motor rode, os enrolamentos do estator têm de ser alimentados

com tensão contínua com uma determinada sequência. Deste modo, são criados

sequencialmente pares de pólos N-S no estator que atraem os pólos S-N do rotor, e este entra

em rotação.

A sequência a aplicar terá de fazer rodar o rotor, num sentido ou noutro, para tal, é necessário

conhecer-se a sua posição para determinar qual ou quais os enrolamentos que devem ser

alimentados.

A posição do rotor é detectada, tipicamente, por sensores de efeito de Hall. Normalmente em

motores industriais existem três destes sensores colocados no estator. Sempre que os pólos

magnéticos do rotor são detectados por estes sensores a electrónica de comando é informada

sobre a posição do rotor.

Baseado na combinação dos sinais fornecidos pelos três sensores (H1, H2 e H3), o

controlador electrónico determina a sequência de alimentação a aplicar aos enrolamentos (fases)

do estator para que o rotor rode no sentido desejado e à velocidade pretendida.

Page 31: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

19

O circuito de controlo destes motores permite a regulação de vários parâmetros do motor, tais

como: velocidade, sentido de rotação e binário.

Na figura 1.20 está representado um circuito de comando típico de um motor Brushless com

um estator com três fases ligadas em estrela.

Figura 1.20 - Circuito de comando típico de um motor Brushless com três fases.

Estes motores apresentam uma baixa manutenção, uma operação silenciosa, um bom

rendimento, uma vida útil longa, gama extensa de velocidades e devido ao facto de não

possuírem escovas, um desgaste mecânico reduzido e interferências electromagnéticas (EMI)

muito baixas. Pelo facto de serem constituídos por um rotor mais leve, constituído por ímans

permanentes, a inércia, comparada com rotores em núcleo de ferro, é menor. Isto melhora as

características de aceleração, de travagem e a eficiência energética. A necessidade de um

controlador electrónico para funcionarem é a sua desvantagem, uma vez que aumenta o custo

do projecto.

As aplicações dos motores sem escovas incluem entre outras: compressores, bomba

ventoinhas, máquinas de lavar, etc.

Actualmente, estes motores, com o respectivo controlador, também dominam muito o

hardware existente no computador, nomeadamente os discos duros, leitores de CD, leitores de

DVD e ventoinhas para refrigeração.

A eficiência elevada, baixa manutenção e o tamanho reduzido destes motores torna-os

especialmente indicados para aplicações em que a fiabilidade seja um ponto importante.

Devido às suas características, os motores de CC sem escovas têm vindo a substituir os

motores de CC com escovas em variadíssimas aplicações.

Page 32: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

20

1.2.2. Motores de Corrente Alternada (CA)

Neste tipo de motor, o fluxo magnético do estator é gerado nas bobinas de campo pela

corrente alternada da fonte de alimentação monofásica ou trifásica, portanto trata-se de um

campo magnético cuja a intensidade varia continuamente e cuja polaridade é invertida

periodicamente.

Relativamente ao rotor, há dois casos a considerar: os Motores Síncronos e os Motores

Assíncronos.

1.2.2.1. Motores Síncronos

No motor síncrono, o rotor é constituído por um íman permanente ou bobinas alimentadas em

corrente contínua mediante anéis colectores. Neste caso, o rotor gira com uma velocidade

directamente proporcional à frequência da corrente no estator e inversamente proporcional ao

número de pólos magnéticos do motor.

São motores de velocidade constante e são utilizados somente para grandes potências devido

ao seu alto custo de fabricação.

A seguinte equação define a velocidade síncrona nS deste tipo de motor:

pfns

.120= (eq.1.2)

Onde:

§ nS- velocidade de sincronismo ( rpm );

§ f- frequência da corrente do rotor (Hz);

§ p- número de pólos magnéticos do motor.

1.2.2.2. Motores Assíncronos

No motor assíncrono ou de indução, o rotor possui vários condutores conectados em curto-

circuito no formato de uma “gaiola de esquilo”, conforme mostra a figura 1.21.

Page 33: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

21

Figura 1.21 – Rotor em gaiola de esquilo.

O campo magnético variável no estator, figura 1.22, induz correntes sinusoidais nos

condutores da gaiola do rotor. Estas correntes induzidas, por sua vez, criam um campo

magnético no rotor que se opõe ao campo indutor do estator (Lei de Lenz). Como os pólos se

com a mesma polaridade se repelem, então há uma força no sentido de rotação do rotor. O rotor

gira com uma velocidade n um pouco inferior à velocidade síncrona, isto é, a velocidade da

corrente do campo. Como é um pouco inferior, este motor é conhecido por motor assíncrono,

isto é, sem sincronismo.

Desta forma este motor não consegue arrancar, isto é, acelerar desde a velocidade zero até a

nominal pois as forças que actuam nas barras curto-circuitadas opõem-se umas às outras,

impedindo o seu arranque. Para que este motor possa arrancar é usual, utilizar-se uma bobina

de campo auxiliar, desfasada de 90 graus das bobinas de campo principais, que cria um campo

magnético auxiliar no arranque. Assim, o fluxo resultante inicial está desfasado em relação ao

eixo das abcissas, e produz um binário de arranque. Após o arranque, enrolamento auxiliar deixa

de ser necessário, pois a própria inércia do rotor compõem as forças necessárias para manter a

rotação.

Figura 1.22 – Fluxo magnético do motor de Indução Monofásico de dois Pólos.

Page 34: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

22

A diferença em valores percentuais entre a velocidade síncrona e a velocidade do motor de

indução é conhecida como deslizamento, simbolizada pela letra S. O deslizamento dos motores

de indução é variável em função da carga a ser accionada pelo motor, ou seja, é mínimo em

vazio (sem carga) e máximo com a carga nominal. O deslizamento dos motores de indução é

expresso através da seguinte equação:

100×−

=s

s

nnnS (eq.1.3)

§ n - velocidade do eixo do motor (rpm).

Através das duas últimas equações é possível verificar que a velocidade dos motores síncronos

e assíncronos pode ser controlada através do ajuste do valor da frequência da corrente nas

bobinas do estator. Este tipo de accionamento é realizado através de um conversor estático de

frequência.

Ao contrário dos motores síncronos e de corrente contínua; o motor assíncrono ou de indução

é largamente utilizado nas indústrias pela sua simplicidade construtiva, pouca manutenção e

baixo custo.

Os motores de indução podem ser monofásicos ou trifásicos.

1.2.2.2.1. Motores de Indução Monofásico

É um motor eléctrico de pequena ou média potência, geralmente menores que 5 CV. Para a

produção do conjugado de partida o motor de indução monofásico necessita de um segundo

enrolamento de partida auxiliar (Ea) desfasado de 90º construtivamente do enrolamento de

trabalho (Et), conforme é indicado na figura 1.23.

Figura 1.23 – Motor de indução monofásico.

Page 35: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

23

O resultado da acção das correntes nos enrolamentos de trabalho e auxiliar é um campo

magnético girante no estator, que faz o motor arrancar. Após o arranque o enrolamento auxiliar é

desligado através de uma chave centrífuga que opera a cerca de 75% da velocidade síncrona. O

conjugado de partida, neste caso, é moderado. Para aumentar o conjugado de partida é usado

um condensador, ligado em série com o enrolamento auxiliar e a chave centrífuga. Esta técnica

é utilizada para cargas de partida difíceis, tais como: compressores, bombas, equipamentos de

refrigeração, etc.

O motor de indução monofásico normalmente utilizado apresenta seis terminais acessíveis,

sendo quatro para os dois enrolamentos de trabalho Et (1,2,3 e 4), bobinas projectadas para

tensão de 127 V, e dois para o circuito auxiliar de partida (5 e 6), também projectado para a

tensão de 127 V. A figura 9 mostra o esquema de ligação do motor de indução monofásico para

as tensões de alimentação de 127 e 230 V entre fase e neutro.

(a) Ligação em paralelo para 127V. (a) Ligação em série para 230V.

Figura 1.24 – Esquemas de Ligação do Motor de Indução Monofásico.

Em alguns motores de baixa potência, o circuito auxiliar de partida é substituído por espiras

curto-circuitadas, chamadas de bobinas de arraste. Neste caso, a máquina apresenta dois ou

quatro terminais para as bobinas de trabalho.

Para a inversão do sentido de rotação no motor de indução monofásico basta inverter as

ligações do circuito auxiliar, ou seja, trocar o terminal 5 pelo 6.

No motor com bobina de arraste não é possível inverter o sentido de rotação.

1.2.2.2.2. Motores de Indução Trifásico

É um motor eléctrico de pequena, média ou grande potência que não necessita de circuito

auxiliar de partida, ou seja, é mais simples, menor, e mais leve que o motor de indução

Page 36: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

24

monofásico de mesma potência, por isso apresenta um custo menor. A figura 1.25 mostra o

princípio de funcionamento do campo girante do mesmo.

Figura 1.25 – Funcionamento do campo girante do motor de indução trifásico.

O motor de indução trifásico apresenta seis terminais acessíveis, dois para cada enrolamento

de trabalho Et e, a tensão de alimentação destas bobinas é projectada para 230V. Para o

sistema de alimentação 220/127 V-50Hz este motor deve ser ligado em triângulo e para o

sistema 380/220V-50Hz o motor deve ser ligado em estrela conforme mostra a figura 1.26.

Page 37: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

25

(a) Ligação em triângulo (Δ) -220V (b) Ligação em estrela (Ү) – 380V

Figura 1.26 – Esquemas de Ligação do Motor de Indução Trifásico.

Para a inversão no sentido de rotação nos motores de indução trifásicos basta inverter duas

das ligações do motor com as fontes de alimentação. A potência eléctrica PE absorvida da rede

para o funcionamento do motor é maior que a potência mecânica PM fornecida no eixo

especificado pelo fabricante, pois existe um determinado rendimento η do motor a ser

considerado, isto é:

(%) 100cos..3 .

×==φ

ηLL

M

E

M

IVP

PP (eq.1.4)

A potência mecânica no eixo PM do motor (em W) está relacionada com o momento de torção

M ou conjugado (em N.m) e com a velocidade do rotor n (em rpm) através da seguinte

operação.

)(.602 WMnPMπ

= (eq.1.5)

A figura 1.27 mostra as curvas do binário do motor, binário da carga e da corrente absorvida

pelo mesmo, ambas em função da velocidade do rotor.

Page 38: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

26

Figura 1.27 – Binário e corrente de um motor de indução trifásico.

Sem accionar nenhuma carga no eixo, em vazio, o motor garante um valor reduzido de

potência mecânica somente para vencer o atrito causado pela ventilação e pelos rolamentos. O

binário do motor neste caso é próximo de zero, a corrente io também é mínima e a velocidade do

rotor é máxima no mas inferior à velocidade síncrona nS.

O motor ao accionar uma carga nominal acoplada ao seu eixo a corrente aumenta para o valor

nominal iN e a velocidade diminui até o valor nominal nN, onde se obtém a igualdade de binário,

isto é, o binário do motor é igual ao binário de carga.

Podemos aumentar a carga no eixo do motor (binário de carga) além da carga nominal, mas

este procedimento compromete a vida útil da máquina, até o ponto em que o binário do motor é

máximo MM, a velocidade do motor irá diminuir para nK e a corrente irá aumentar para iK.

No arranque, velocidade igual a zero, o motor de indução absorve uma corrente muito elevada

iP da ordem de até dez vezes a corrente iN e seu binário de partida é baixo MP dificultando com

isso o accionamento de cargas que necessitam de um alto binário para o arranque, como por

exemplo: tapetes de transporte com carga.

Page 39: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

27

1.2.3. Motores Especiais

Os motores especiais são máquinas construídas para serem aplicadas no controlo de precisão

relativamente à posição e velocidade dos processos. São motores mais rápidos que os

convencionais, os seus enrolamentos são dimensionados para suportarem picos de corrente, em

contrapartida o rotor de uma máquina especial é projectado para uma baixa inércia, isto é

pequeno diâmetro e grande comprimento.

1.2.3.1. Servomotores

De forma geral, os servomotores são classificados em servomotores de corrente contínua (CC)

e de corrente alternada (CA).

1.2.3.1.1. Servomotores CC

O estator é formado por ímãs permanentes e pelas escovas e o rotor é constituído pelas

bobinas da armadura e pelo comutador. O controlo da velocidade ou posição é feito através da

regulação da corrente das bobinas da armadura.

Apresentam como vantagens os seguintes aspectos:

- Baixo custo, os motores CC são produzidos actualmente com baixos custos de fabricação;

- Suavidade em baixas rotações, esta característica é obtida através de modelos com um

grande número de ranhuras (lamelas) no rotor, tornando-o a melhor opção relativamente a esta

característica;

- Drivers de baixo custo, um driver de corrente contínua pode ser tão simples como uma

ponte de transístores;

- Sem consumo nas paragens, sem carga estática no motor não haverá consumo de

corrente para manter uma posição;

- Alto binário de pico, em aplicações com ciclo de trabalho intermitente particularmente no

posicionamento de cargas de elevada inércia, o motor pode operar com sobre intensidades;

- Evolução linear da curva binário/velocidade, permite obter óptimos desempenhos através

da simples geração de rampas de aceleração;

- Grandes variedades de modelos disponíveis, os motores CC estão disponíveis com uma

grande variedade de opções, incluindo motores com baixa inércia para aplicações de alta

dinâmica;

Page 40: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

28

- Operação a altas velocidades, os motores CC podem operar sem problemas a velocidades

até 5000 rpm.

Apresentam como desvantagens os seguintes aspectos:

- Manutenção das escovas, não chega a ser um problema se o motor estiver em local de

fácil acesso, caso contrário inviabiliza a aplicação. Há que se considerar também a emissão de

pó por parte do carvão das escovas, o que inviabiliza o seu uso em locais extremamente limpos;

- Risco de explosão, devido aos arcos eléctricos gerados nas escovas torna-se inviável o seu

uso em ambientes sujeitos a explosão (ou no vácuo);

- Comutações limitadas, a repetição de movimentos curtos (menor do que uma rotação) fica

limitada devido a comutação mecânica;

- Baixa dissipação térmica, todo o calor é gerado internamente no rotor, o que dificulta sua

dissipação para o meio;

- Pode ser desmagnetizado, elevadas correntes podem resultar na desmagnetização parcial

do motor;

- Custo de instalação, os servomotores CC apresentam maiores custos de instalação quando

comparados aos motores de passo.

1.2.3.1.2. Servomotores CA

O estator é formado pelas bobinas de campo que são alimentadas por uma fonte trifásica e o

rotor é constituído por ímãs permanentes. O controlo da velocidade ou posição é feito através da

regulação da frequência das correntes nas bobinas de campo.

Apresentam como vantagens os seguintes aspectos:

- Estão isentos de manutenção, devido ao facto de não possuírem escovas para a

comutação;

- Boa dissipação térmica, pois todo calor é gerado no estator o que facilita sua dissipação

para o meio;

- Altíssimas velocidades, não há comutadores mecânicos para limitarem a velocidade,

pequenos motores sem escovas podem facilmente atingir velocidades até 12000 rpm;

- Insensíveis ao ambiente, não emitem ruídos, pós, faíscas, ou outros tipos de resíduo ao

ambiente. Além disto, podem suportar elevadas temperaturas bem como ambientes em vácuo.

Page 41: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

29

Apresentam como desvantagens os seguintes aspectos:

- Elevado custo, principalmente devido ao uso de materiais magnéticos compostos por terras

raras;

- Controladores mais caros e complexos, controladores do tipo seis estados, trapezoidais não

são tão mais caros como os controladores para motores DC com escovas, porém os

controladores para a geração de ondas sinusoidais podem apresentar valores mais elevados.

1.2.3.2. Motores de Passo-a-passo

Os motores de passo ou (passo-a-passo) representado na figura 1.28, são dispositivos

mecânicos electromagnéticos que podem ser controlados digitalmente através de um hardware

específico ou através de software. A cada impulso de comando o eixo do motor roda um

pequeno ângulo (passo) e permanece estável nessa posição se mais nenhum impulso for

aplicado.

São usados em larga escala em impressoras, scanners, leitores de disquetes, discos rígidos

etc. Este tipo de motor é utilizado quando existe a necessidade de precisão. Os motores de

passo têm um número fixo de pólos magnéticos que determinam o número de passos por volta.

Existem vários modelos de motores de passos disponíveis no mercado, os mais comuns têm

entre 2 a 72 passos/volta, significando que levam de 2 a 72 passos para completar uma volta.

Figura 1.28 – Aspecto de um motor de passo-a-passo.

Tipos de Motores de Passo

Existem basicamente três tipos de motores passo-a-passo: íman permanente, relutância

variável e híbrido.

Todos possuem estator e rotor, diferindo principalmente na constituição do rotor.

Page 42: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

30

Ø MOTOR DE ÍMAN PERMANENTE

Figura 1.29 – Motor de íman permanente.

O estator dos motores de íman permanente (figura 1.30), de utilização corrente, é formado

normalmente por duas secções, cada uma com o seu enrolamento e vários conjuntos de pólos

magnéticos (dentes) dispostos radialmente em torno do rotor.

Figura 1.30 – Constituição do motor de íman permanente.

O rotor representado na figura 1.31, é cilíndrico, não possui dentes, sendo formado por

conjuntos de ímans permanentes N-S dispostos radialmente em torno do veio.

Figura 1.31 – Rotor do motor de íman permanente.

Page 43: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

31

Princípio de funcionamento

O motor de íman permanente tem como princípio de funcionamento as leis de atracção e

repulsão entre pólos magnéticos. Quando os enrolamentos do estator são alimentados, criam

pólos magnéticos N e S nos dentes de cada secção. Por exemplo, em todos os dentes

superiores, de cada secção, pólos N, e em todos os inferiores, pólos S. Como os pólos contrários

se atraem, os pólos N dos imanes permanentes do rotor que estiverem mais próximos são

atraídos pelos dentes do estator com pólos S e os pólos S do rotor pelos dentes com pólos N,

rodando o rotor no sentido de alinhamento dos campos magnéticos.

É neste princípio que se baseia o funcionamento do motor passo-a-passo de íman permanente.

Portanto, para fazer rodar o rotor, basta criar um campo magnético rotativo, alimentando

sucessivamente os dois enrolamentos do estator (A e B), como se indica na tabela 1.1.

Tabela 1.1 – Sequência de alimentação dos enrolamentos do motor de íman permanente.

Figura 1.32 - Funcionamento do motor de íman permanente.

Page 44: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

32

Passo 1: O enrolamento A é alimentado, passando a corrente no sentido indicado. São

criados pólos magnéticos N-S no estator que atraem os pólos S-N do rotor, como mostrado em

1.

Passo 2: Idem para o enrolamento B, deslocando-se o rotor 90° no sentido anti-horário

Passo 3: A corrente passa novamente no enrolamento A, mas em sentido contrário. Agora os

pólos magnéticos criados no estator têm sinais contrários aos do passo 1. O rotor é

novamente atraído, deslocando-se mais 90°.

Passo 4: A corrente passa novamente no enrolamento B, agora em sentido contrário. Os

pólos magnéticos criados no estator têm nome contrário aos do passo 2. O rotor é novamente

atraído e desloca-se mais 90°.

Uma rotação completa é realizada em quatro passos. Se a sequência de alimentação de

alimentação dos enrolamentos for invertida (l, 4, 3, 2), o rotor roda em sentido horário.

Um motor de íman permanente de uso comum não roda por passos de 90º, a sua capacidade

de posicionamento seria muito baixa. Um motor, como os utilizados nas impressoras, roda

normalmente por passos de 7,5º. Estes motores possuem um rotor formado por 12 conjuntos

de pólos N-S e duas secções no estator com 12 +12 pólos cada. No total existem 48 pólos no

estator, o que corresponde, em 360º, a 48 passos 7,5º.

Quando se alimentam as bobinas, de cada um dos enrolamentos são criados alternadamente

em cada secção do estator 12 pólos N e 12 pólos S. Os pólos criados vão interagir com os pólos

do rotor (12 pólos N + 12 pólos S) e este desloca-se com passos de 7,5º. Alimentando

sequencialmente os enrolamentos, num sentido ou noutro, o rotor desloca-se no sentido horário

ou no sentido anti-horário.

O motor de íman permanente apresenta um bom binário e distinguem-se dos de relutância

variável porque no movimento manual do veio, mesmo com os enrolamentos desligados,

apresenta um ligeiro binário de retenção. Este é devido ao íman do rotor.

Estes motores são de construção simples e baixo custo, são usados, principalmente em

aplicações não industriais.

O seu grande campo de utilização é em periféricos de computadores: impressora,

fotocopiadoras e scanners.

Page 45: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

33

Ø MOTOR DE RELUTÂNCIA VARIÁVEL

Este tipo de motor (figura 1.33), possui um rotor constituído por material de boa

permeabilidade magnética e um estator com três ou mais enrolamentos. Tanto o estator como o

rotor possuem pólos salientes (dentes).

Figura 1.33 - Modelos comerciais de motores de relutância variável.

Princípio de funcionamento

Quando se alimentam os enrolamentos do estator, os dentes deste magnetizam-se e atraem

os dentes salientes do rotor que estiverem mais próximos, o rotor roda alinhando os seus dentes

com os dentes do estator. O alinhamento dos dentes corresponde a uma posição de relutância

mínima, ou seja, corresponde ao mais fácil caminho para as linhas de força do campo

magnético.

Figura 1.34 - Aspecto interior de um motor de relutância variável com três fases.

A relutância do circuito magnético, no equivalente magnético da resistência de um circuito

eléctrico, é mínima quando a distância entre os dentes do estator e do rotor também o for.

A indutância do enrolamento que está alimentado varia enquanto o rotor gira. Se os dentes

não estão alinhados, a indutância é baixa e a corrente aumenta rapidamente. Quando os dentes

estão alinhados, a indutância é grande e a corrente diminui. Esta é uma dificuldade no controlo

do motor de relutância variável.

No estator destes motores existem, tipicamente, três conjuntos de enrolamentos, A, B e C,

cada qual com duas bobinas colocadas em pólos diametralmente opostos e ligadas em série,

Page 46: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

34

formando uma fase. Alimentando sequencialmente os enrolamentos do estator com uma tensão

contínua como está representado na tabela 1.2, o rotor roda como está representado na

figura1.35.

Tabela 1.2 – Sequência de alimentação dos enrolamentos do motor de relutância variável.

Figura 1.35 – Funcionamento do motor de relutância variável.

Neste caso o motor possui três fases (enrolamentos A, B e C) e, consequentemente, três

conjuntos de pólos magnéticos. O rotor, constituído por material ferromagnético, possui quatro

dentes (1,2, 3 e 4). O seu funcionamento é o seguinte:

Page 47: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

35

Passo 1: Quando a fase A (bobina A) é alimentada, os dentes do rotor procuram uma posição

de relutância mínima, no exemplo, os dentes l e 3 alinham-se com ou pólos N-S do enrolamento

A.

Passo 2: Passando a alimentação para a fase B, são atraídos pelos pólos do enrolamento B os

dentes do rotor que estiverem mais próximos, no caso, dentes 2 e 4. O rotor desloca-se 30°

para a nova posição de relutância mínima.

Passo 3: Desligada a fase B e ligada a fase C, são atraídos os dentes l e 3 e o rotor desloca-se

mais 30°.

Passo 4: Desligada a fase B e ligada a fase A, são atraídos os dentes 2 e 4 e o rotor desloca-se

mais 30°.

Continuando a alimentar sucessivamente as bobinas A, B e C, o rotor desloca-se por por passo

de 30º no sentido anti-horário. Uma rotação completa do rotor corresponde a 12

Caso se pretenda que o rotor rode no sentido horário, as bobinas têm de ser alimentadas pela

ordem inversa: A, C e B.

Como o motor de relutância variável não se baseia nas leis da atracção e repulsão entre pólos

magnéticos, mas sim no princípio da relutância mínima, o sentido de passagem da corrente nos

enrolamentos é indiferente. Estes motores não possuem íman permanente no rotor, por isso, o

rotor move-se livremente, não tendo binário de retenção. Esta é uma das formas de distinguir

este motor dos motores de íman permanente e híbridos; nestes, o rotor possui um pequeno

binário de retenção.

Os motores de relutância são menos utilizados do que os motores de íman permanente. A sua

principal utilização é em aplicações de precisão com binários muito reduzidos.

Ø MOTOR HÍBRIDO

A construção dos motores de íman permanentes com ângulos de passo abaixo de 7,5° é de

alguma complexidade; esta situação é ultrapassada com o motor híbrido, representado na figura

1.36. Este combina os princípios do motor de íman permanente e do motor de relutância

variável. O motor híbrido tem um pequeno ângulo de passo (tipicamente 1,8°) e um binário

elevado num motor relativamente pequeno.

Page 48: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

36

Figura 1.36 - Motores híbridos comerciais.

O motor híbrido possui um rotor constituído por um íman permanente e massas polares, com

dentes, acopladas aos pólos do íman.

O estator possui tipicamente dois enrolamentos com várias bobinas e pólos magnéticos com

dentes. Estes pólos estão dispostos em frente dos dentes das massas polares do rotor.

Figura 1.37 - Constituição do motor híbrido.

Este motor possibilita realizar passos muito reduzidos com um binário bastante elevado,

reunindo as vantagens do motor de íman permanente e do motor de relutância variável,

tornando-se por isso, dos motores de passo-a-passo mais utilizados em aplicações industriais.

Princípio de funcionamento

O motor híbrido combina o modo de funcionamento do motor de íman permanente e do motor

de relutância variável.

O seu rotor como é constituído por massas polares acopladas a um íman permanente,

possuem: uma, um pólo N, e outra, um pólo S.

Page 49: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

37

Figura 1.38 – Vista em corte do motor híbrido.

O estator deste motor possui quatro dentes e dois enrolamentos. O rotor tem um total de seis

dentes: três nas massas polares anteriores, com polaridade N, acoplados ao pólo N do íman

permanente, e três, nas massas polares posteriores, com polaridade S, acoplados ao pólo S do

íman. Os dentes posteriores estão posicionados a meio do intervalo dos anteriores. Se os

enrolamentos do estator forem alimentados com a sequência de impulsos indicados na seguinte

tabela, a sequência da sua rotação é indicada na figura 1.39.

Tabela 1.3 – Sequência de alimentação dos enrolamentos do motor híbrido.

Figura 1.39 -Funcionamento do motor híbrido.

Page 50: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

38

Passo 1: Alimentando o enrolamento A do estator, no sentido indicado, é criado no dente

superior um pólo S e no dente inferior um pólo N. Pelo pólo S é atraído o dente anterior N do

rotor e pelo pólo N o dente posterior S.

Passo 2: Alimentando o enrolamento B, no sentido indicado, é criado no dente lateral direito do

estator um pólo S e no dente lateral esquerdo um pólo N. Pelo pólo S é atraído o dente anterior

N do rotor que estiver mais próximo e pelo pólo N o dente posterior S do rotor que estiver mais

próximo. O rotor desloca-se 30º no sentido anti-horário.

Passo 3: Alimentando novamente o enrolamento A, mas agora com corrente em sentido

contrário, é criado no dente superior um pólo N e no dente inferior um pólo S. Pelo pólo

N é atraído o dente posterior S que estiver mais próximo e pelo pólo S o dente anterior N

mais próximo. O rotor desloca-se mais 30° no sentido anti-horário.

Passo 4: Alimentando agora o enrolamento B com corrente em sentido contrário, é criado

no dente lateral direito um pólo N e no dente lateral esquerdo um pólo S. Pelo pólo N é

atraído o dente posterior S que estiver mais próximo e pelo pólo S o dente anterior N

que estiver mais próximo. O rotor desloca-se mais 30º no sentido anti-horário.

Nesta fase, o rotor deslocou-se no sentido anti-horário 90°. Continuando a alimentar os

enrolamentos com a mesma ordem (l, 2, 3, 4), o rotor continua a rodar no anti-horário.

Uma rotação completa do rotor corresponde a 12 passos.

Caso se pretenda que o rotor rode em sentido horário, basta trocar a sequência de

alimentação dos enrolamentos, ou seja, alimentar os enrolamentos pela seguinte ordem

(1,4,3,2).

Figura 1.40 - Dentes das massas polares separados de meio passo de dente.

Page 51: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

39

Os motores híbridos utilizados nas aplicações práticas possuem um número de dentes

muito superior ao utilizado no exemplo para explicar o funcionamento; é vulgar

apresentarem 200 dentes ou mais. Também podem possuir um rotor com vários ímanes

permanentes intercalados entre massas polares. Neste caso, os dentes de cada

massa polar estão fisicamente desencontrados, o que possibilita ângulos de passo

extremamente pequenos.

Os motores híbridos, tal como os de íman permanente, apresentam um pequeno binário

de retenção. O veio ao ser rodado manualmente apresenta uma força que de oposição

ao movimento, que se deve à atracção entre o íman permanente do rotor e os pólos do

estator.

MODOS DE ALIMENTAÇÃO DOS MOTORES DE PASSO-A-PASSO

Ø Unipolares:

Neste tipo de alimentação (figura 1.41), a corrente de excitação que circula nos enrolamentos

do estator do motor é sempre no mesmo sentido.

Este tipo de motor pode possuir cinco, seis ou oito condutores, ligados como se mostra na

figura seguinte. Os usuais possuem cinco ou seis condutores e são formados por dois

enrolamentos iguais com ponto médio comum (cinco condutores) ou separado (seis condutores).

São motores de quatro fases.

Figura1.41 - Enrolamentos do motor com alimentação unipolar

O ponto médio dos enrolamentos destes motores é ligado a tensão positiva da fonte de

alimentação e os terminais dos extremos à tensão negativa. A corrente circula do comum para

os terminais dos extremos.

Nos motores com seis terminais de ligação, não utilizando o ponto médio, os enrolamentos

ficam ligados em série, podendo o motor funcionar como bipolar. Nos motores com oito

Page 52: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

40

terminais é possível a ligação em série ou em paralelo entre os enrolamentos. A configuração

unipolar nos enrolamentos simplifica, quando se utilizam componentes discretos no circuito de

comando do motor.

Ø Motores Bipolares:

Neste modo de alimentação o estator do motor possui dois enrolamentos iguais, circulando a

corrente de excitação neles, ora num, ora noutro sentido. Estes motores possuem quatro

condutores de ligação, duas fases.

Figura 1.42 – Disposição dos enrolamentos de um motor com alimentação bipolar.

Dado que a corrente pode circular, em cada enrolamento, nos dois sentidos, uma vez cria um

campo magnético com uma polaridade, outra vez com polaridade contrária. O motor com

alimentação bipolar é de construção mais simples que o motor unipolar e para o mesmo

tamanho, possui um binário mais elevado.

Apresentam como vantagens os seguintes aspectos:

- Menor custo, se a aplicação puder ser realizada com motor de passo;

- Isento de Manutenção, não há escovas ou outras partes sujeitas a desgastes, não

necessitando portanto de manutenções periódicas;

- Estabilidade nas paragens, sem comutação na corrente de fase o rotor permanece

completamente parado. Não há a tendência do rotor se agitar em torno de uma posição do

encoder;

- Industrialmente padronizado, são fabricados com eixo ou face padronizados (Norma NEMA

ou Métrico) sendo portanto facilmente substituíveis;

- Baixa limitação pelo ambiente, podem ser usados em quase todos os ambientes (inclusive

no vácuo);

Page 53: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

41

- Isento de erros, não há erros no drive de modo a gerar a perda de controlo do movimento.

Pelo contrário, em tais situações há a tendência do rotor parar (ao contrário do que pode

acontecer nos sistemas servo controlados);

- Dificilmente desmagnetizável, elevados níveis de corrente não causam desmagnetização de

seus materiais (ao contrário do que pode ocorrer com os motores com escova);

- Seguros e fiáveis, os motores de passo são bastante simples sob o ponto de vista

construtivo, praticamente isentos de falhas;

- Resistente a sobrecargas, não há elevação da corrente no motor quando em situações de

sobrecarga como ocorrem nos servomotores;

- Relação (binário/dimensão), comparativamente com os motores DC (com escovas), do

mesmo tamanho, o motor de passo pode fornecer altos binários de saída em baixas velocidades;

- Ligação simples, são necessárias apenas quatro vias de alimentação, o que pode ser uma

vantagem em situações onde as conexões tenham elevados custos.

Apresentam como desvantagens os seguintes aspectos:

- Perda de suavidade para baixas velocidades, sendo o maior problema dos motores de

passo. Pode, porem ser solucionado com drivers de micro-passo;

- Perda de posicionamento em malha aberta, pode ocorrer em situações de sobrecarga. Um

encoder para confirmação de passo poderia resolver o problema, porém neste caso seria

preferível o uso de um servomotor;

- Corrente nominal mesmo quando parado, como o binário de retenção exige circulação de

corrente, isto causa aquecimento do motor mesmo quando parado;

- Possibilidade de ocorrência de fenómenos de ressonância, a baixas velocidades;

- O binário diminui com o aumento da velocidade.

1.2.4. Binário

O binário do motor é a medida do esforço necessário para fazer girar um eixo, e é dado pela

seguinte equação:

(N.m) raio F.T = (eq. 1.6)

No caso de qualquer motor, o binário de arranque deve ser maior do que o binário existente

acoplado ao eixo. Após um certo tempo do motor ter arrancado à velocidade nominal, este

alcança a velocidade nominal, há o encontro das curvas de Binário do motor e do binário

Page 54: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

42

resistente. Na curva representada a seguir verifica-se que, quando a carga mecânica no eixo

varia por algum motivo, o binário motor também varia, e consequentemente a velocidade de

rotação do motor também varia.

Por exemplo, se a carga mecânica diminui, o binário do motor também diminui e a velocidade

aumenta, estabilizando num novo regime.

Figura 1.43 – Evolução do binário do motor em função da carga mecânica.

1.3. Microcontrolador

O surgimento do microprocessador teve um grande impacto no mercado da electrónica

digital. Os desenhos de equipamento dos mais variados tipos foram revolucionados e conseguiu-

se fornecer aos equipamentos que eram convencionais, aquilo que é normalmente apelidado de

inteligência, flexibilizando a operação e aumentando as capacidades e a performance do

equipamento.

Hoje em dia já se torna bastante difícil encontrar dispositivos que não possuam alguma

espécie de microprocessador. De facto, integrando numa pequena pastilha de silício um

conjunto de recursos muito variado (CPU, memória, unidade aritmética, I/O digitais e/ou

analógicas, comunicação série/paralelo, entre outros), o projecto de sistemas baseados em

microprocessador tornou-se económico, flexível e comparativamente mais rápido do que até

então se conseguia fazer.

A revolução que o microprocessador provocou nos novos equipamentos foi acompanhada por

uma revolução na metodologia de projecto que passou a envolver fases até então inexistentes.

O projecto de uma arquitectura baseada em microprocessador é dividido em três grandes

áreas:

- O desenho do hardware necessário para que o microprocessador possa desempenhar

normalmente as suas funções (base de tempo, memória, I/O, entre outros);

Page 55: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

43

- O desenho do hardware específico que define a natureza do equipamento e que deverá

ser desenhado para poder dialogar directamente com o sistema de controlo do ponto

anterior;

- O desenho do software que funcionará no sistema de controlo e que permitirá que o

sistema seja utilizado por um utilizador humano com maior ou menor flexibilidade e

segurança.

Neste trabalho utilizou-se um microcontrolador. Embora a análise da estrutura que

distingue um microprocessador de um microcontrolador fique fora dos objectivos deste trabalho,

pode-se adiantar que, de uma maneira simples, o microcontrolador integra muitas

características funcionais de um sistema baseado num microprocessador, juntando todas essas

características num único circuito integrado, o que proporciona o desenho com microcontrolador

mais económico e muito mais compacto.

1.4. PWM (Pulse Width Modulation)

Esta técnica consiste na modulação da largura de impulso, variando a largura do impulso ou

Duty-Cycle, mas mantendo o período e a amplitude do sinal constantes, tal como está

representado na figura 1.44.

Esta técnica é muito utilizada para o controlo da velocidade de motores, em fontes comutadas,

para o controlo da intensidade do brilho de LEDS e lâmpadas, entre outras, sendo estas apenas

algumas das aplicações deste tipo de técnica.

Figura 1.44 – Sinal de PWM para 0%, 25%, 50%, 75% e 100% de duty-cycle.

A grande vantagem do uso de circuitos PWM como controladores em relação aos circuitos

resistivos é a sua eficiência. Enquanto a eficiência da técnica do PWM é de praticamente 1,

possuindo menos de 1% de perda, o circuito resistivo trabalha a 50% da carga (50% vai

realmente para alimentação da carga e 21% é dissipado por aquecimento nas resistências).

Page 56: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

44

Uma outra grande vantagem consiste no facto de na modulação de largura de pulso, os pulsos

estarem com o valor nominal de pico, gerando um maior binário nos motores ao contrário de um

controlador resistivo, já que deverá ter uma tensão reduzida, podendo causar a paragem do

motor devido ao binário reduzido. Além disso, podem usar-se potenciómetros menores para

controlar cargas variadas, ao contrário dos resistivos que usam potenciómetros de maior

dimensão e mais dispendiosos.

Uma das desvantagens do PWM é a possibilidade de gerar ruído electromagnético mais

conhecido como EMI.

Este efeito indesejado pode ser minimizada colocando o controlador perto da carga e em

alguns casos recorrendo a filtros adicionais.

1.5. MOSFET

O transístor de efeito de campo de porta isolada (“Metal Oxide Semiconductor Field Effect

Transístor”, MOSFET) é um dos dispositivos mais utilizados em aplicações de electrónica na

indústria devido à sua elevada eficiência em aplicações que exijam frequências de comutação

muito elevadas. A tecnologia FET foi inventada em 1930, cerca de 20 anos antes do transístor

bipolar. Actualmente, milhões de MOSFETS são integrados em dispositivos electrónicos. Exemplo

disso é a sua integração num dos dispositivos actuais mais vulgarmente utilizados, os

microprocessadores.

O MOSFET é um dispositivo unipolar (ou seja a corrente é devida só a um tipo de portadores

maioritários) com três terminais, em que o eléctrodo de comando ou porta (G -“Gate”) é

electricamente isolado do material semicondutor por uma fina camada de óxido de Silício. Nos

outros dois terminais são aplicados os sinais de potência a controlar, designando-se dreno (D –

“Drain”) e fonte (S -“Souce”).

Existem dois tipos de MOSFETs: um do tipo modo de depleção e outro do tipo modo de

enriquecimento. À excepção de algumas aplicações especiais, maioritariamente utiliza-se o

MOSFET do tipo de enriquecimento, tanto nos circuitos discretos como nos integrados. A

principal utilização nos circuitos discretos verifica-se na comutação de potência, para elevados

níveis de correntes. A utilização em principal nos circuitos integrados ocorre na comutação

digital, processo básico em que assentam os computadores modernos.

O MOSFET do tipo modo de depleção constitui parte da evolução para o MOSFET do tipo

modo de enriquecimento, também conhecido por E-MOSFET, representado na figura 1.45.

Page 57: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

45

Figura 1.45 – MOSFET do tipo modo de enriquecimento a) Não polarizado; b) Polarizado.

Quando a tensão aplicada na porta deste tipo de MOSFET, é zero a corrente entre a fonte e o

dreno é zero, garantindo que o MOSFET está desligado, sendo este o seu estado por defeito. A

única forma de garantir a passagem de corrente é através da aplicação de uma tensão de porta

positiva (VGS). Quando VGS for positiva, os electrões livres são atraídos para a região P, que se irão

recombinar nas lacunas existentes junto ao silício. Se VGS for suficientemente positiva todas as

lacunas que tocam no dióxido de silício são preenchidas e os electrões livres começam a fluir da

fonte para o dreno. O efeito é o mesmo que criar uma fina camada de material do tipo N junto

ao dióxido de silício. A esta fina camada condutora atribui-se a designação de camada de

inversão do tipo N. Quando existe, os electrões livres flúem facilmente da fonte para o dreno. Ao

valor mínimo de VGS que cria a camada de inversão do tipo N designa-se tensão de limiar e

simboliza-se por VGS,lim . Quando o valor de VGS for inferior a VGS,lim, a corrente do dreno é nula, o

mesmo não acontece quando o valor de VGS é maior que VGS,lim, dado que a camada de inversão

tipo N gerado, garante a ligação da fonte ao dreno, podendo assim a corrente fluir.

Na figura 1.46a é possível verificar a representação gráfica que VGS,lim está geralmente associada

a este tipo de MOSFET, estando a seta existente na figura a apontar para a camada de inversão

que se comporta como um canal N quando o dispositivo conduz.

Também existe o E-MOSFET de canal P. O seu símbolo gráfico muito semelhante ao do tipo N,

diferindo apenas no sentido da seta, como é possível verificar na figura 1.46b.

Figura 1.46 – Símbolos gráficos do EMOS a) N-MOSFET; b) P-MOSFET.

Page 58: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

46

1.6. Controladores

Neste capítulo é feita uma breve descrição sobre alguns tipos de controladores mais utilizados.

1.6.1 Controlo ON-OFF

O algoritmo de controlo mais simples é o do controlador ON-OFF, também conhecido por

controlador Bang-Bang. Neste tipo de controlador o sinal de erro é aplicado na entrada de um

comparador cuja saída actua directamente na entrada do sistema.

O sinal de controlo u(t) para este tipo de controlador é dado por:

(eq.17)

Onde e(t) é o sinal de erro definido como e(t)=r(t) - y(t), em que r(t) é o sinal de referência e

y(t) é o sinal medido da variável controlada. umax e umin são, respectivamente o valor máximo e

mínimo que o sinal de controlo u(t) pode tomar. Finalmente, y(t) corresponde ao sinal de saída.

O comportamento do controlador ON-OFF pode ser descrito de forma gráfica pela figura 1.47.

Dependendo do sinal do erro e(t) o sinal de controlo toma o valor máximo ou mínimo.

Figura 1.47 – Sinal de controlo do algoritmo ON-OFF.

Partindo do princípio que o ganho estático do sistema a controlar é positivo tem-se:

• Se e(t) é negativo significa que o sinal de saída y(t) é superior ao sinal de referência r(t) e

o sinal de controlo toma o valor mínimo.

• Se e(t) é positivo significa que o sinal de saída y(t) é inferior ao sinal de referência e o

sinal controlo toma o valor máximo.

É imediato concluir que face a um processo real, o sinal de controlo vai exibir uma oscilação

permanente. Esta oscilação terá, forçosamente de se reflectir também no sinal de saída.

O diagrama de blocos de um sistema de controlo utilizando um controlador ON-OFF é

apresentado na figura 1.48.

<⇒

>⇒=

0)(0)(

)(min

max

teuteu

tu

Page 59: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

47

Figura 1.48 – Controlador ON-OFF.

É conhecido que este tipo de algoritmo apresenta limitações quando é utilizado para comparar

sinais afectados de ruído. Para evitar estes problemas utiliza-se um comparador com histerese.

O comportamento do controlador ON-OFF com histerese pode ser descrito, de forma gráfica pela

figura 1.49.

Figura 1.49 – Comportamento do controlador ON-OFF com histerese.

O diagrama de blocos de um sistema de controlo utilizando um controlador ON-OFF com

histerese está representado na figura 1.50.

Figura 1.50 – Controlador ON-OFF.

1.6.2. Controlo Proporcional

Uma solução capaz de evitar as oscilações inerentes ao princípio de funcionamento do

controlador ON-OFF consiste em utilizar um controlador cujo ganho seja reduzido para pequenos

valores do erro. Este objectivo pode ser alcançado utilizando uma “banda proporcional” ou

Controlador Proporcional.

O sinal de controlo para este tipo de controlador é dado por:

Page 60: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

48

×+=

min

0

max

ue(t)Ku

uu(t) p

0

00

0

ee(t)ee(t)e

ee(t)

−<⇒+≤≤−⇒

+>⇒ (eq.1.8)

Em que u0 é a amplitude do sinal de controlo correspondente a um sinal de erro e(t) nulo, -e0 e

+e0 são os valores máximos do sinal de erro, umax e umin são, respectivamente a maior e a menor

amplitudes do sinal de controlo e Kp é o ganho do controlador. O comportamento do algoritmo

proporcional pode ser descrito da forma gráfica pela figura 1.51.

Figura 1.51 – Comportamento do algoritmo proporcional.

O diagrama de blocos de um sistema de controlo utilizando um controlador Proporcional é

apresentado na figura 1.52.

Figura 1.52 – Controlador Proporcional.

1.6.2.1 Erro em estado estacionário

Utilizando um algoritmo proporcional é possível eliminar a oscilação permanente intrínseca ao

algoritmo ON-OFF. Este objectivo origina, contudo o aparecimento de um outro problema: não é

possível garantir que o erro em estado estacionário seja igual a zero.

É fácil provar esta última afirmação. Supondo que o erro e(t) é pequeno temos que o sinal de

controlo u(t) é dado pela seguinte expressão:

)()( 0 teKputu ×+= (eq.1.9)

Isto significa que o sinal de erro e(t) é:

Page 61: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

49

Kputu

te 0)()(

−= (eq.1.10)

No estado estacionário o erro é nulo se e só se uma das seguintes condições for verdadeira:

• Kp é infinito

• u0 = u(t)

A primeira condição conduz a um controlador cujo comportamento é semelhante ao do

algoritmo ON-OFF. A segunda condição implica que o sinal u0 varia de modo a que o erro em

estado estacionário seja sempre nulo para qualquer valor da entrada de referência.

A obtenção automática de um sinal u0 variável capaz de proporcionar um erro estacionário nulo

para todo e qualquer valor da entrada de referência conduz ao algoritmo Proporcional Integral

(PI).

1.6.3. Controlo PI

O controlador, cujo diagrama de blocos é apresentado na figura 1.53, é composto por um

bloco subtractivo (obtenção do sinal de erro), um bloco integrador (cálculo do integral do sinal de

erro), um bloco somador e um bloco de ganho.

Figura 1.53 – Controlador PI.

Os sinais r(t), u(t), y(t) e e(t) são, respectivamente, o valor de referência, o sinal de controlo, o

sinal de saída e o sinal de erro do controlador.

As constantes Kp (ganho), Ti (constante de tempo de integração) são coeficientes associados

respectivamente ao ganho e acção integral do controlador.

O sinal de controlo é definido pela seguinte expressão:

+= ∫ dtte

TiteKptu )(1)()( (eq.1.11)

Page 62: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

50

O sinal de controlo depende do ganho do controlador (Kp), do valor instantâneo do erro e do

integral do erro afectado do valor de escala (1/Ti). Por outras palavras, o sinal de controlo é

directamente proporcional ao sinal de erro e à sua evolução passada (acção integral).

1.6.3.1 Erro em estado estacionário

É possível provar que este tipo de algoritmo elimina o erro em regime estacionário.

Supondo que o sinal r(t) está fixo:

1. Se por hipótese o sinal e(t) está fixo e é diferente de 0;

2. O sinal de controlo u(t) devido ao integral está a subir (ou a descer), se o sinal e(t) é fixo

então o produto Kp×e(t) também é fixo;

3. Se o sinal u(t) está a subir (ou a descer) então o sinal y(t) também está a subir (ou a

descer);

4. Então o sinal e(t)=y(t)-r(t) não pode ser constante e contradiz 2;

O que significa que e(t) fixo tem de ser igual a zero.

1.6.3.2 Incapacidade de reagir à derivada do erro

Apesar do algoritmo PI eliminar o erro em estado estacionário é incapaz de reagir com base na

derivada do erro. Esta limitação é evidente na análise da figura 1.54.

Figura 1.54 – Derivada do erro.

Supondo que as duas áreas são iguais: No instante t, nas duas situações, os sinais de controlo

são iguais.

Contudo existe uma grande diferença entre as duas situações:

ü Na curva da esquerda o erro está a diminuir.

ü Na curva da direita o erro está a aumentar.

Page 63: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

51

1.6.4. Controlo PID

Num sistema de controlo do tipo proporcional integral derivativo (PID), cujo diagrama de

blocos é apresentado na figura 1.55. O controlador é um composto por cinco componentes: um

bloco subtractivo (responsável pela obtenção do sinal de erro), um bloco integrador (responsável

pelo cálculo do integral do sinal do erro), um bloco diferenciador (responsável pelo cálculo da

derivada do erro), um bloco somador e um bloco de ganho.

Figura 1.55 – Controlador PID.

O sinal de controlo, u(t), é definido pela seguinte expressão:

++= ∫ dt

tdeTddtteTi

teKptu )()(1)()( (eq.1.12)

O sinal de controlo depende do ganho do controlador (Kp), do valor instantâneo do sinal de

erro, do integral e da derivada desse mesmo erro afectados respectivamente dos factores de

escala (1/Ti) e Td.

Ao parâmetro Ti dá-se, como já foi referido anteriormente, o nome de constante de tempo de

integral.

Ao parâmetro Td dá-se o nome de constante de tempo derivativo.

1.6.4.1 Acção Diferencial (Análise Qualitativa)

Com o auxílio da figura 1.54 é possível fazer uma análise qualitativa da acção diferencial do

controlador PID: No instante t o sinal do erro da figura da direita está a aumentar pelo que o

controlador deve actuar rapidamente deve actuar rapidamente para obrigar o sinal de erro a

voltar a zero. Na figura da esquerda o sinal de erro está a diminuir pelo que o controlador não

deve modificar o seu comportamento.

Page 64: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

52

A utilização da derivada do erro na expressão do sinal de controlo permite este tipo de

compensação. O sinal de controlo possui, também uma componente proporcional à taxa de

variação do erro.

Assim, o sinal de controlo é, tal como se representa na figura 1.56 proporcional ao: valor

instantâneo do erro (P); integral do erro (I); derivada do erro (D).

Figura 1.56 – Evolução do erro num controlador PID.

Na prática não se utiliza a derivada do sinal de erro mas antes a derivada do sinal de saída. A

expressão do sinal de controlo será:

++= ∫ dt

tdyTddtteTi

teKptu )()(1)()( (eq.1.13)

Para evitar os efeitos do ruído o sinal de saída é ainda filtrado antes de ser calculada a sua

derivada.

1.6.5. PID – Implementação Computacional

Como já foi apresentado anteriormente um controlador PID possui a seguinte expressão

relacionando no domínio do tempo a entrada com a saída:

++= ∫ dt

tdeTddtteTi

teKptu )()(1)()( (eq.1.14)

É possível discretizar esta expressão de modo a implementá-la directamente num computador

digital.

1.6.5.1 Discretização da expressão do controlador

No sentido de simplificar a discretização da expressão do controlador pode separar-se a

expressão anterior em três partes:

)()()()( tdtitptu ++= (eq.1.15)

Page 65: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

53

onde p(t) corresponde ao termo proporcional , i(t) corresponde ao termo integral e d(t)

corresponde ao termo diferencial.

Tendo portanto:

Ø )()( teKptp ×= (eq.1.16)

Ø ∫= dtteTiKpti )()( (eq.1.17)

Ø dt

tdeTdKptd )()( ×= (eq.1.18)

Partindo do pressuposto que ∆t é o intervalo de amostragem é possível discretizar os diversos

termos de modo a implementar o algoritmo PID directamente num computador.

1.6.5.2 Termo proporcional

A discretização do termo proporcional é simples bastando para o efeito substituir e(t) pelo seu

equivalente discreto e(k).

)()( keKptp ×= . Onde: )()( kyyke ref −= (eq.1.19)

1.6.5.3 Termo Integral

O termo integral pode ser obtido aproximando o integral por um método trapezoidal.

Diferenciando ambos os lados da equação:

)()( teTiKp

dttdi

= (eq.1.20)

Substituindo e(t) por e(k) e aproximando a derivada por diferenciais tem-se:

)()1()( keTiKp

tkiki

−− (eq.1.21)

Simplificando:

)()1()( keTi

tKpkiki ∆×+−= (eq.1.22)

O termo integral é deste modo facilmente implementável utilizando um método recursivo.

1.6.5.4 Termo Derivativo

Page 66: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Suporte Teórico

54

O termo derivativo pode de um modo semelhante ao termo integrador, ser relativamente bem

aproximado do seguinte modo:

tkekeTdKpkd

∆−−

×=)1()()( (eq.1.23)

1.6.5.5 Controlador a 3 Termos

Juntando os três termos, proporcional, integral e derivativo, vem:

tkekeTdKpke

TitKpkikeKpku

∆−−

×+∆×

+−+×=)1()()()1()()( (eq.1.24)

1.6.5.6 Problemas de ruído

A existência de um termo derivativo tende a dar relevo a componentes de ruído, uma vez que a

diferenciação de um sinal tem sempre como consequência enfatizar os termos de alta-frequência

desse mesmo sinal. Existem alguns métodos capazes de combater este problema. Um deles

será filtrar o sinal de erro com um filtro passa-baixo cuja banda de passagem inclua apenas as

frequências consideradas significativas para o desempenho do controlador. Outra solução

consiste em incluir um filtro passa-baixo no termo diferenciador.

Como comentário adicional, refira-se que os filtros passa-baixo podem ser implementados

segundo o método tradicional, com condensadores e resistências (tipo passivo) ou com

amplificadores operacionais (filtros activos) ou directamente no computador utilizando um dos

muitos métodos conhecidos do Processamento Digital de Sinal (por exemplo através de um filtro

FIR).

Page 67: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

55

Capitulo II

2. Desenvolvimento do Hardware

Neste capítulo é abordado o processo de desenvolvimento da parte de hardware (figura 2.1),

necessário para implementar o controlo da velocidade do um motor DC bem como do código

desenvolvido para o microcontrolador.

Assim, é feita uma análise detalhada de todo o equipamento utilizado, em função das suas

características técnicas nominais, de modo a que na fase de desenvolvimento do hardware estas

características sejam respeitadas, garantindo a integridade de todo o equipamento.

Figura 2.1 – Diagrama de blocos do hardware desenvolvido.

2.1 Motor DC utilizado

O motor utilizado é um motor DC de íman permanente da “Maxon” representado na figura

2.2.

Figura 2.2 – Aspecto do Motor DC “Maxon RE36”.

As características técnicas deste motor estão representadas nas figuras 2.3 e 2.4.

Page 68: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

56

Figura 2.3 – Características técnicas do motor DC RE36 da “Maxon”.

Figura 2.4 – Curva característica de funcionamento do motor RE36.

2.2 Encoder utilizado

O encoder utilizado para efectuar a leitura da velocidade do motor, foi o encoder incremental

HEDS-5540 A11 da “Hewlett Packard” como é possível visualizar na figura 2.5.

Figura 2.5 – Aspecto do encoder HEDS-5540 A11 da “Hewlett Packard”.

Page 69: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

57

As características técnicas do encoder HEDS-5540 A11 são:

ü Resolução de 500 passos por volta;

ü 3 Canais de saída (2 canais em quadratura de fase + 1 canal de índex);

ü Diâmetro do veio de 4mm, adequado ao motor Maxon RE36;

ü Tensão de alimentação +5V.

As condições máximas admissíveis deste encoder estão referidas na tabela 2.1:

Parâmetro: HEDS-5540 Temperatura de funcionamento -40 a 100°C Tensão de alimentação, VCC -0,5 até 7 V Tensão de saída, Vo -0.5 a Vcc Corrente de saída por canal, Iout -1.0mA a 5mA Vibração 20g, 5 a 1000Hz Velocidade 30.000 RPM Aceleração 250.000 rad/seg2

Tabela 2.1 – Condições máximas admissíveis do encoder.

A qualidade dos sinais, provenientes dos canais do encoder mantém-se estável até uma

frequência de amostragem máxima de 100 KHz. Para frequências superiores é necessário

utilizar resistências de pull-up de 2,7 kΩ, como está representado na figura 2.6.

Figura 2.6 – Aplicação de resistências de pull-up nos canais do encoder.

2.3 Microcontrolador utilizado

O microcontrolador escolhido para implementar o controlo em malha fechada da velocidade de

rotação do motor DC foi o PIC16F876 da “Microchip”, representado na figura 2.7. Trata-se um

microcontrolador de 8 bits baseado numa EEPROM de baixo custo e alta performance. Este tipo

de microcontrolador é também denominado como RISC (Reduce Instructions Construction Set),

uma vez que possui um número de instruções limitado. Isto constitui uma vantagem uma vez

que quanto menor for o número de instruções disponíveis mais simples e mais rápida será a

Page 70: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

58

compilação do código, tornando o seu funcionamento muito rápido. A dificuldade, surge na

complexidade da sua programação dado o número reduzido de instruções.

Figura 2.7 – Pinos do microcontrolador PIC16F876.

Os principais factores que contribuíram para a sua escolha foram o facto de este disponibilizar

todos os recursos necessários para a implementação do controlo da velocidade do motor,

nomeadamente:

v Frequência de relógio de 20 MHz;

v 8 K de memória de programa FLASH;

v 368 Bytes de memória de dados (RAM);

v 256 Bytes de memória EEPROM;

v 3 Temporizadores, sendo apenas um necessário para a leitura de um canal proveniente

do encoder;

v 2 Saídas de PWM, sendo apenas uma necessária para aplicar à Gate do MOSFET;

v 1 USART “Universal Synchronous Asynchronous Receiver Transmitter” necessária para

estabelecer a comunicação RS-232;

v 13 Interrupções, sendo algumas delas externas;

v 1 ADC de 10bits, com cinco canais;

v Existência de um Watchdog Timer;

v 3 Portos de I/O digitais;

v Possui apenas 35 instruções.

Page 71: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

59

2.4. Esquemas eléctricos

Neste tópico são apresentados os esquemas eléctricos desenvolvidos.

2.4.1 Esquema eléctrico da placa de controlo para a aplicação industrial

Na figura 2.8, está representado o esquemático da placa responsável pelo controlo da

velocidade do motor relativo à aplicação industrial. Uma vez que a tracção de fio têxtil se vai

realizar num único sentido, não é necessário mais do que um MOSFET para a sua

implementação.

12

J1

Power

123

J2

Encoder

D1

1N4001

123

J3

Motor

10KR0

10KR1

10KR3

10KR4

10KR6

10KR5

10KR7

10KR8

10KR2

+5

RA0/AN0 2

RA1/AN1 3

RA2/AN2/VREF- 4

RA3/AN3/VREF+ 5

RA4/T0CKI 6

RA5/AN4/SS 7

RB0/INT 21

RB1 22

RB2 23

RB3/PGM 24

RB4 25

RB5 26

RB6/PGC 27

RB7/PGD 28

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RC2/CCP113

RC3/SCK/SCL14

RC4/SDI/SDA15

RC5/SDO16

RC6/TX/CK17

RC7/RX/DT18

VSS8

VSS19

MCLR/VPP1

OSC1/CLKIN9

OSC2/CLKOUT10

VDD 20

U1

PIC16F876-20I/SP

+5

+5

+5

+5

D0D1D2D3D4D5D6D7

D0D1D2D3D4D5D6D7

A0A1A2

Encoder

Encoder

A0A1A2

22pFC1

22pFC2 LED1

1KR9

12345678

J5

CON8

12345

J4

CON5

A3

A3

+24VM+M-

2

1

3

Q1

MOSFET-N

1 2Y1

20MHz

100nFC0

10rR10

F1

100mA

Figura 2.8 – Esquemático da placa de controlo da velocidade do motor.

A saída de PWM do microcontrolador pode ser directamente ligada à base do MOSFET

BUZ100, de forma a controlar a velocidade do motor, uma vez que a tensão aplicada na Gate,

necessária para o MOSFET conduzir é de aproximadamente +5V, tal como pode ser verificado na

figura 2.9.

Page 72: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

60

Figura 2.9 – Curva características do MOSFET (BUZ100).

Sempre que a saída de PWM apresenta um valor nulo de tensão, este valor ao ser aplicado na Gate do MOSFET irá

garantir que este não conduz, impedindo que seja aplicada tensão ao motor. Uma vez que a tensão da “Source” do N-

MOSFET é de 0V, logo a tensão Vgs (Vgs=Vg-Vs), é de 0V, impedindo o N-MOSFET de conduzir.

Quando na saída do PWM é gerado o valor de tensão +5V, e é aplicado na “Gate” do MOSFET,

como a tensão da “Source” do MOSFET é de 0V, então a tensão Vgs (Vgs=Vg-Vs) é de +5V,

colocando o MOSFET a conduzir, garantindo assim que são aplicados +24V ao motor,

colocando-o em funcionamento.

No esquema eléctrico estão definidas 4 entradas digitais, de forma a ser possível definir os 12

níveis de velocidade de rotação do motor.

Foram também incluídas 8 saídas digitais de forma disponibilizar para o PC, o valor percentual

da velocidade de rotação do motor.

Placa de circuito impresso realizada

Uma vez obtido o esquemático da placa de controlo, passou-se então à concepção da sua

placa de circuito impresso, representada na figura 2.10.

Page 73: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

61

Figura 2.10 – Aspecto do PCB concebido da placa de controlo.

2.4.3 Esquema eléctrico da placa de controlo para o módulo didáctico

Na figura 2.11, está representado o esquemático eléctrico da placa para o módulo didáctico.

Este módulo tal como já referido, possibilita controlar a velocidade de rotação de um motor DC,

podendo o utilizador definir qual o valor da velocidade pretendida, o algoritmo de controlo a ser

aplicado, definir os parâmetros Kp, Ki e Kd do controlador, bem como monitorizar o valor da

velocidade de rotação e o valor em módulo do erro do sistema.

Para este módulo optou-se pela implementação do protocolo de comunicação RS232 para

interface com o computador, dado que é bastante simples de desenvolver do ponto de vista

eléctrico e bastante mais económico, devido ao reduzido número de componentes necessários

para a sua implementação.

O protocolo RS-232 foi definido com uma taxa de transferência de dados ou baud rate de

9600 bits/s, 1 start-bit, 8 bits de dados, 1 bit de paridade par e um stop-bit.

Para converter os níveis de tensão TTL (0 e +5V), utilizados pelo microcontrolador, em níveis

de tensão adequados ao protocolo RS-232 utilizou-se o componente MAX232 da MAXIM.

Page 74: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

62

12

J1

12VAC

123

J2

Encoder

12

J3

Motor+5

+5

+5

+5

Encoder

Encoder

1 2Y1

20MHz22pFC4

22pFC5 LED1

+5

100nFC1

100nFC6

100nFC7

100nFC8

100nF

C9

162738495

J4

DB9

1000uF/35V

C0

Vin VoutGND

VR1

7805 100nFC2

+12

+12

F1

3

2

1

4

D1

F2

2.5A

F3

100mA

C1+1 VDD 2

C1-3

C2+4

C2-5

VEE 6

T2OUT 7

R2IN 8R2OUT9

T2IN10 T1IN11

R1OUT12 R1IN 13

T1OUT 14

GND15

VCC 16

U2

MAX232ACPE

RA0/AN0 2

RA1/AN1 3

RA2/AN2/VREF- 4

RA3/AN3/VREF+ 5

RA4/T0CKI 6

RA5/AN4/SS 7

RB0/INT 21

RB1 22

RB2 23

RB3/PGM 24

RB4 25

RB5 26

RB6/PGC 27

RB7/PGD 28

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RC2/CCP113

RC3/SCK/SCL14

RC4/SDI/SDA15

RC5/SDO16

RC6/TX/CK17

RC7/RX/DT18

VSS8

VSS19

MCLR/VPP1

OSC1/CLKIN9

OSC2/CLKOUT10

VDD 20

U1

PIC16F876-20/SP

RXD

RXD

TXD

TXD

21

3Q1

1KR1

10rR2

10KR0

100nFC10

+5 Figura 2.11 – Esquemático da placa do módulo didáctico.

Placa de circuito impresso realizada

Obtido o esquema eléctrico da placa do módulo didáctico de controlo, passou-se à concepção

da sua placa de circuito impresso, representada na figura 2.12.

Figura 2.12 – Aspecto do PCB concebido da placa de controlo.

Page 75: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

63

2.5. Programação do microcontrolador

Neste capítulo são identificadas e descritas as etapas consideradas necessárias para a

implementação do controlo PID digital no microcontrolador.

2.5.1 Determinação do período mínimo de amostragem

Para implementar o controlo da velocidade do motor é necessário determinar a velocidade de

rotação do mesmo.

Deste modo, numa fase inicial é necessário alimentar o motor à tensão nominal e estando este

a trabalhar sem carga, com o auxílio de um osciloscópio medir o período de um pulso

proveniente do encoder que se encontra acoplado ao veio do motor.

Neste caso, o motor “Maxon RE36” foi alimentado com uma tensão de 24VDC e analisou-se o

sinal proveniente do encoder “HEDS-5540 A11” através de um osciloscópio, a partir do qual, se

obteve a forma de onda representada na figura 2.13.

Figura 2.13 – Frequência máxima de amostragem obtida.

Tal como é possível constatar pela análise da forma de onda obtida o período de um impulso

ou passo do encoder corresponde a 20 µs.

Uma vez que se pretende definir o valor da velocidade entre 0 e 100%, para o valor máximo,

corresponde um período de amostragem de:

msss 2200020100 ==× µµ

Este será o tempo a ser considerado para o cálculo da velocidade.

Page 76: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

64

2.5.2 Considerações a ter para obtenção da velocidade pretendida

Dado que o período de amostragem para o cálculo da velocidade é de 2ms, este será um dos

factores mais importantes a considerar.

Um dos objectivos deste projecto consiste em definir 12 níveis distintos de velocidade de

tracção de fio, sendo eles: 6m/min, 12m/min, 24m/min, 50m/min, 75m/min, 100m/min,

150m/min, 200m/min, 250m/min, 300m/m, 350m/min e 400m/min.

Como exemplo, para o nível de velocidade de tracção de fio igual a 6m/min é necessário

executar os seguintes cálculos:

Perímetro do rolo = diâmetror ×=×× ππ2 (eq.2.1)

Como o diâmetro do rolo de tracção de fio é igual a 3,09cm

Perímetro do rolo = m097.00309.0 =×π

Ou seja, 1 rotação do motor corresponde a 0.097m

1 Rotação _____________ 0.097m x _____________ 6m

Rotações86.61097.0

16x =×

=⇒

Sabendo que o encoder utilizado possui 500 passos e que correspondem a uma volta

completa do veio do motor, obtém-se:

1 Rotação _____________ 500 Passos

61.86 Rotações _____________ x

Passos309301

50086.61x =×

=⇒

A fórmula para o cálculo da velocidade é:

)/( smtxv

∆∆

= (eq.2.2)

Correspondendo neste caso ∆x ao número de passos do encoder e ∆t ao período de

amostragem que é 2ms. Logo, para se obter o valor da velocidade pretendida (6m/min) em (nº

de passos/2ms), tem-se:

30930 Passos _____________ 60000ms x _____________ 2ms

Passo160000

309302x ≅×

=⇒

Page 77: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

65

Sendo portanto, este o valor a ser definido como velocidade de referência (“Vel_ref”), no

algoritmo de controlo.

2.5.3 Implementação do algoritmo de controlo PID

Para a implementação do controlo da velocidade do motor, foi utilizada a seguinte expressão

de controlo no código fonte do microcontrolador:

tkekeTdKpke

TitKpkikeKpku

∆−−

×+∆×

+−+×=)1()()()1()()( (eq.2.3)

Considerando: tTdKpKde

TitKpKi

∆×

=∆×

= , obtém-se a seguinte expressão:

( ))1()()1())(()()( −−×+−+×+×= kekeKdkikeKikeKpku (eq.2.4)

No módulo didáctico de controlo foram implementados 4 algoritmos de controlo distintos no

código fonte do microcontrolador, de modo a que o utilizador possa escolher qual pretende

utilizar para o controlo da velocidade de rotação do motor.

As expressões dos algoritmos de controlo implementadas foram as seguintes:

Algoritmo de controlo 1:

( ))1()()1()()()( )( −− −×++×+×= kkkkkk eeKdieKieKpu (eq.2.5) Algoritmo de controlo 2:

( ))1()(0

)1()()()( 2 −

=

− −×+

−×+×= ∑ kk

t

i

iikk eeKd

eeKieKpu (eq.2.6)

Algoritmo de controlo 3:

( ) ( ))1()()()( −−×+×+×= ∑ kkkk eeKdjKieKpu (eq.2.7)

Sendo j, um valor unitário, que será incrementado no caso do valor do erro do sistema ser

positivo e será decrementado no caso do valor do erro do sistema ser negativo. O termo integral

é por sua vez limitado entre os valores +/-100.

Este algoritmo é muito semelhante ao “Algoritmo de controlo 1” deferindo somente no cálculo

do termo integral onde, no primeiro caso é calculado o somatório do erro do sistema ao longo do

tempo e neste caso, sempre que existe erro no sistema, é adicionado (erro_actual>0) ou

subtraído (erro_actual<0) um pequeno valor ao acumulador de erro do sistema, em cada

passagem do ciclo do programa. Por mais pequeno que seja o erro, se este persistir durante

algum tempo irá originar um valor considerável no acumulador, de modo a actuar o sistema.

Page 78: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

66

Dado que o controlo é processado por um microcontrolador a uma frequência de relógio de 20

MHz, a resposta do sistema vai ser muito rápida tornando este método bastante interessante.

Tal como no termo proporcional o termo integral também está limitado para +/-100.

Algoritmo de controlo 4:

( ))2()1()()()1()()1()( 2)( −−−− +×−×+×+−×=− kkkkkkkk eeeKdeKieeKpuu

( ) )1()2()1()()()1()()( 2)( −−−− ++×−×+×+−×=⇒ kkkkkkkk ueeeKdeKieeKpu (eq.2.8)

Em anexo está disponível o código desenvolvido em “Assembler” para o microcontrolador

PIC16F876 da placa de controlo bem como o código fonte para o microcontrolador do módulo

didáctico. O código fonte está devidamente estruturado e comentado de modo a facilitar a sua

interpretação.

O cristal de Quartzo usado em ambos os casos é de 20 MHz que, em função das

características do microcontrolador utilizado (PIC16F876), proporciona um tempo de ciclo de

instrução de 0.2µs.

A frequência de PWM definida foi de 50 KHz, podendo, este valor ser alterado em função dos

critérios para sua utilização. De referir apenas que uma frequência de comutação muito elevada

proporciona um aumento significativo da temperatura do semicondutor, neste caso do MOSFET

BUZ100 aumentando as perdas por efeito de Joule e contribuindo para a redução significativa do

tempo de vida útil do componente.

Numa primeira abordagem, ao funcionamento do código fonte desenvolvido para o

microcontrolador da placa de controlo é apresentado o seu respectivo fluxograma na figura 2.14

e 2.15.

O algoritmo utilizado para a implementação do código fonte do módulo didáctico é muito

semelhante ao algoritmo do código fonte da placa de controlo, diferindo apenas no facto do

protocolo de comunicação existente entre o PC e o módulo ser o RS-232, dos valores Kp, Ki e Kd

serem definidos pelo utilizador no computador, o algoritmo de controlo a ser implementado ser

também em função da escolha do utilizador e pelo facto de este enviar para o computador

periodicamente os valores da velocidade actual de rotação do motor e o valor do erro actual do

sistema.

Page 79: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

67

Figura 2.14 – Fluxograma do código fonte desenvolvido para a placa de controlo.

Kp=3; Ki=1; Kd=0 Inicializações específicas

LIGAR LED

ORDEM = ORDEM

ANTERIOR?

Vel_ref = ORDEM erro_acum = 0

Não

Sim

O valor da Vel_actual foi

obtido?

Sim

Não

LER ORDEM

ESCREVER Vel_actual

FIM

CONTROLO

Interrupção do Timer2

Programa Principal:

PWM = SpR_value Iniciar o Timer2

Contador ←Contador -1

Contador=0?

Sim

Vel_actual = Timer1 Timer1 = 0 Restaurar o Contador.

Não

FIM

Interrupção interna:

Reiniciar o Watchdog Timer

Início

Page 80: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

68

Figura 2.15 – Fluxograma da rotina para a implementação do controlo PID.

De seguida é apresentado o fluxograma completo do código fonte, desenvolvido em

“Assembler” para microcontrolador PIC16F876 do módulo didáctico, representado na figura

2.16 até à figura 2.30 inclusive.

CONTROLO

SUM=0 erro_actual = Vel_ref – Vel_actual

Temp = Kp× erro_actual Temp ∈ [-100; 100]

SUM= Temp

Temp = (Ki× erro_actual) + erro_acum Temp ∈ [-100; 100]

erro_acum = erro_acum + erro_actual

Temp = Kd× (erro_actual – erro_antigo) Temp ∈ [-100; 100]

SUM= SUM + Temp

SUM= SUM + Temp SUM ∈ [0; 100]

Rotina para a implementação do algoritmo de controlo PID da velocidade:

erro_antigo = erro_actual

FIM

SpR_value = SUM

Erro_actual = 0?

Sim

Não

Page 81: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

69

Figura 2.16 – Fluxograma do código fonte desenvolvido para o módulo didáctico.

Inicializações específicas

LIGAR LED

Chegaram novos Dados?

erro_acum = 0

Não

Sim

O valor da Vel_actual foi obtido?

Sim

Não

LER PARAMETROS (Algoritmo, Kp, Ki, Kd e

Vel_ref)

ESCREVER Vel_actual e |erro_actual|

FIM

CONTROLO

Interrupção do Timer2

Programa Principal:

PWM = SpR_value Iniciar o Timer2

Contador ←Contador -1

Contador=0?

Sim

Vel_actual = Timer1 Timer1 = 0 Restaurar o Contador.

Não

FIM

Interrupção interna:

Reiniciar o Watchdog Timer

Início

Page 82: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

70

Figura 2.17 – Fluxograma da rotina que selecciona um dos algoritmos de controlo PID.

CONTROLO

SUM=0

Rotina para a selecção de um dos algoritmos a aplicar para o controlo PID:

FIM

Algoritmo=1?

Algoritmo=2?

Algoritmo=3?

Algoritmo_1

Não

Não

Sim

Sim

Sim

Algoritmo 2

Algoritmo 3

Não

Algoritmo=4?

Sim

Algoritmo 4

Não

Page 83: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

71

Figura 2.18 – Fluxograma da rotina para a implementação do algoritmo 1 do controlo PID.

Algoritmo 1

Rotina para a implementação do Algoritmo 1 do controlo PID:

C_ERROR

Erro_actual = 0?

Sim

Não

C_PROP

C_INT

C_DIFF

SUM ∈ [0; 100]

erro_antigo = erro_actual

FIM

SpR_value = SUM

SUM=0

Page 84: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

72

Figura 2.19 – Fluxograma da rotina para a implementação do algoritmo 2 do controlo PID.

Algoritmo 2

Rotina para a implementação do Algoritmo 2 do controlo PID:

C_ERROR

Erro_actual = 0?

Sim

Não

C_PROP

C_INT_1

C_DIFF

SUM ∈ [0; 100]

erro_antigo = erro_actual

FIM

SpR_value = SUM

SUM=0

Page 85: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

73

Figura 2.20 – Fluxograma da rotina para a implementação do algoritmo 3 do controlo PID.

Algoritmo 3

Rotina para a implementação do Algoritmo 3 do controlo PID:

C_ERROR

Erro_actual = 0?

Sim

Não

C_PROP

C_INT_2

C_DIFF

SUM ∈ [0; 100]

erro_antigo = erro_actual

FIM

SpR_value = SUM

SUM=0

Page 86: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

74

Figura 2.21 – Fluxograma da rotina para a implementação do algoritmo 4 do controlo PID.

Algoritmo 4

Rotina para a implementação do Algoritmo 4 do controlo PID:

C_ERROR

Erro_actual = 0?

Sim

Não

C_PROP_1

C_INT_3

C_DIFF_1

SUM ∈ [0; 100]

erro_2 = erro_antigo erro_antigo = erro_actual

FIM

SpR_value = SUM

Page 87: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

75

Figura 2.22 – Fluxograma da rotina responsável pelo cálculo do erro actual do sistema.

Figura 2.23 – Fluxograma da rotina responsável pelo cálculo do termo proporcional.

Figura 2.24 – Fluxograma da rotina responsável pelo cálculo do termo proporcional_1.

C_PROP_1

Rotina para o cálculo do termo proporcional_1:

FIM

Temp = Kp× (erro_actual – erro_antigo) Temp ∈ [-100; 100]

SUM= Temp

C_PROP

Rotina para o cálculo do termo proporcional:

FIM

Temp = Kp× erro_actual Temp ∈ [-100; 100]

SUM= Temp

C_ERROR

Rotina para o cálculo do erro do sistema:

erro_actual = Vel_ref – Vel_actual

FIM

Page 88: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

76

Figura 2.25 – Fluxograma da rotina responsável pelo cálculo do termo integral.

Figura 2.26 – Fluxograma da rotina responsável pelo cálculo do termo integral 1.

C_INT_1

Rotina para o cálculo do termo integral 1:

FIM

Temp = (Ki ((erro_actual + erro_antigo)/2) + erro_acum) Temp ∈ [-100; 100]

erro_acum = erro_acum + erro_actual

SUM= SUM + Temp

C_INT

Rotina para o cálculo do termo integral:

FIM

Temp = (Ki× erro_actual) + erro_acum Temp ∈ [-100; 100]

erro_acum = erro_acum + erro_actual

SUM= SUM + Temp

Page 89: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

77

Figura 2.27 – Fluxograma da rotina responsável pelo cálculo do termo integral 2.

Figura 2.28 – Fluxograma da rotina responsável pelo cálculo do termo integral 3.

C_INT_3

Rotina para o cálculo do termo integral 3:

FIM

Temp = Ki (erro_actual ) Temp ∈ [-100; 100]

SUM= SUM + Temp

C_INT_2

Rotina para o cálculo do termo integral 2:

FIM

SUM= SUM + erro_acum

Erro_actual > 0?

Sim Não

erro_acum = erro_acum + Ki erro_acum ∈ [-100; 100]

Erro_actual < 0?

Sim Não

erro_acum = erro_acum - Ki erro_acum ∈ [-100; 100]

Page 90: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Desenvolvimento do Hardware

78

Figura 2.29 – Fluxograma da rotina responsável pelo cálculo do termo derivativo.

Figura 2.30 – Fluxograma da rotina responsável pelo cálculo do termo derivativo_1.

C_DIFF_1

Rotina para o cálculo do termo derivativo 1:

FIM

Temp = Kd× (erro_actual – 2×erro_antigo + erro_2) + SUM Temp ∈ [-100; 100]

SUM= SUM + Temp

C_DIFF

Rotina para o cálculo do termo derivativo:

FIM

Temp = Kd× (erro_actual – erro_antigo) Temp ∈ [-100; 100]

SUM= SUM + Temp

Page 91: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

79

Capitulo III

3. Desenvolvimento do Software de Interface

Neste capítulo são apresentadas as aplicações de interface desenvolvidas para a placa de

controlo da velocidade do motor, inicialmente proposta e para o módulo didáctico de controlo.

3.1 Software de interface para a placa de controlo industrial

Esta aplicação foi totalmente desenvolvida em LabVIEW. e possibilita ao utilizador definir o

nível de velocidade pretendido, através do ajuste do regulador de velocidade indicado pela letra A

na figura 3.1, definir o valor do diâmetro do rolo acoplado ao veio do motor para tracção do fio

têxtil através da introdução do seu valor em metros no campo “Diâmetro do rolo” indicado

através da letra B e monitorizar graficamente a velocidade actual do motor em m/min tal como

está indicado pela letra C na mesma figura.

O valor da velocidade de rotação do motor que é calculado, é disponibilizado pela porta

paralela e está definido como o número de passos contabilizados do encoder ao fim de 2ms ou

seja (nº passos do encoder)/2ms, sendo posteriormente convertido na aplicação para m/min.

Figura 3.1 – Aspecto da aplicação de interface para a placa de controlo industrial.

Page 92: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

80

3.2 Software de interface para a placa do módulo didáctico

Tal como a aplicação de interface para a placa de controlo a aplicação para interface com o

módulo didáctico também foi desenvolvida em LabVIEW.

Todavia esta última possibilita ao utilizador definir um valor de velocidade pretendido de 0 a

100% através do regulador indicado pela letra A na figura 66, definir qual o algoritmo de controlo

a ser implementado pelo microcontrolador através da introdução do número que corresponde ao

algoritmo de controlo no campo “Algoritmo de Controlo” indicado pela letra B, definir os valores

dos parâmetros Kp, Ki, Kd para o controlador nos campos correspondentes indicados pela letra

C e finalmente monitorizar graficamente o valor da velocidade de rotação do motor em (RPM) e

o valor em módulo do erro actual do sistema. Estes dois gráficos, também estão indicados na

figura 66 através das letras D e E.

O valor da velocidade de rotação do motor que é calculado, neste caso é disponibilizado pela

ligação da porta série bem como o valor em módulo do erro do sistema e também está definido

como o número de passos contabilizados do encoder ao fim de 2ms ou seja (nº passos do

encoder) /2ms, sendo posteriormente convertido na aplicação para m/min.

Figura 3.2 – Aspecto da aplicação de interface para o módulo didáctico.

Page 93: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

81

Capitulo IV

4. Resultados obtidos

Relativamente aos resultados obtidos, todos os objectivos propostos para a realização deste

trabalho foram superados com êxito (fig.4.1).

Os parâmetros do controlador PID para o controlo da velocidade de tracção de fio têxtil foram

ajustados de modo a se obter uma resposta rápida do sistema e de modo este possuir um

comportamento estável.

Alguns dos inconvenientes da implementação da estratégia de controlo num microcontrolador

de 8 bits com um número muito reduzido de instruções (RISC), utilizando a linguagem de

programação “Assembler”, foram os níveis de exigência e de dificuldade, que surgiram para a

implementação das operações algébricas elementares, existentes nos algoritmos de controlo,

devido ao facto do microcontrolador utilizado não disponibilizar estas instruções necessárias para

a sua implementação.

As limitações existente a nível de concepção, residem no facto de os resultados obtido das

operações algébricas ser sempre a parte inteira e não a totalidade do número, no caso de este

se tratar de um número não inteiro, e pela limitação de a operação de multiplicação, apenas se

poder realizar por múltiplos de 2.

Todas estas limitações são ultrapassadas, utilizando um compilador de uma linguagem de

programação de mais alto nível para implementar o algoritmo de controlo no microcontrolador.

Figura 4.1 – Imagem do equipamento desenvolvido para a tracção de fio têxtil (À esquerda) e do módulo didáctico

(Á direita).

Page 94: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

82

Page 95: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

83

Conclusão

A realização deste trabalho teve como principal objectivo o controlo da velocidade de um motor

de corrente contínua através da implementação de algoritmos de controlo recorrendo à utilização

de microcontroladores.

Este projecto engloba dois trabalhos, um de carácter industrial e outro de carácter pedagógico.

O trabalho de carácter industrial está englobado num outro projecto de investigação e

desenvolvimento, intitulado “Medição de irregularidades e pilosidades no fio têxtil” e consistiu no

desenvolvimento de um sistema de tracção de fio para doze níveis de velocidade. No que diz

respeito ao hardware já existente, surgiu a necessidade de desenvolver uma nova placa de

controlo pelo facto da existente possuir limitações funcionais, e verificou-se que o encoder

existente também estava danificado. Do hardware existente, foi utilizada apenas a fonte de

alimentação para alimentar a nova placa de controlo desenvolvida.

Para a implementação do algoritmo de controlo foi utilizado o microcontrolador da Microchip

PIC16F876.

O programa de controlo para 12 velocidades seleccionáveis por entradas digitais do

microcontrolador, foi realizado através da programação do microcontrolador em código

“Assembler”, que através de 4 entradas digitais provenientes da porta paralela do computador

possibilitam definir os níveis de velocidade pretendidos.

Os objectivos propostos para a realização deste trabalho foram superados, pois não só foi

resolvido o problema existente para o controlo da velocidade de tracção de fio têxtil do projecto

de investigação e desenvolvimento, como também foram acrescentados mais níveis de

velocidade de tracção e a possibilidade de monitorização da velocidade de rotação actual do

motor.

Relativamente ao trabalho de carácter pedagógico, foi concebido um módulo com fins

didácticos, com o objectivo de contribuir para a clarificação da implementação do processo de

controlo da velocidade de rotação de um motor. Permite demonstrar a influência dos parâmetros

de controlo Kp, Ki e Kd na resposta do sistema, bem como poder definir o algoritmo de controlo

e a possibilidade de analisar o comportamento do sistema através da monitorização do valor da

velocidade de rotação do motor e do valor do erro do sistema em módulo.

Verificou-se que a utilização do controlo derivativo para sistemas com ruído não só não atenua

o erro como o torna mais evidente, comportando-se como um amplificador para altas-

frequências.

Page 96: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

84

Como perspectiva futura de desenvolvimento, aponta-se a possibilidade de melhorar o módulo

didáctico de controlo através da utilização de rotinas algébricas mais avançadas existentes nos

microcontroladores CISC (Complex Instructions Construction Set), de modo a que, os resultados

das operações algébricas usadas nos algoritmos de controlo sejam mais precisos.

Page 97: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

85

Bibliografia

[1] António Francisco; “Motores Eléctricos”, ETEP – Edições Técnicas e Profissionais, 2008;

[2] Albert Paul Malvino; “Princípios de Electrónica” – 6ª edição, (volume I e II), McGraw-Hill,

2000;

[3] Cuesta – Gil Padilla – Remiro, “Electrónica Digital”, Mc-Graw-Hill, 1999;

[4] D. A. Bradley, Van Nostrand Reinhold,”Power Electronics (Tutorial Guides in Electronic

Engineering)”, 1990;

[5] José F. Alves Silva, “Electrónica Industrial”, Fundação Calouste Gulbenkian, 1998;

[6] Joseph J. Distefano, Allen R. Stubberud, Ivan J. Williams, “Sistemas de Retroação e

Controle ”, Mc-Graw-Hill, 1972;

[7] K.Ogata, “Modern Control Engineering”, Prentice-Hall, 1997;

[8] K. Thorborg, “Power Electronics”, Prentice Hall, 1998;

[9] Morris Driels, “Linear Control Systems Engineering”, Mc-Graw-Hill, 1996;

[10] Norman S. Nise, “Control System Engineering” (2ND Edition), Addison-Wesley, 1995;

[11] Paul H. Lewis, Chang Yang, “Basic Control Systems Engineering”, Prentice Hall, 1997;

[12] Richard C. Dorf, Roberth H. Bishop, “Modern Control Systems”, Addison-Wesley, 1998;

[13] Vítor Meireles, Circuitos Eléctricos”, Lidel, 2001;

[14] Fabricantes: www.maxim-ic.com, www.maxonmotor.com, www.microchip.com.

Page 98: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA
Page 99: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Anexo I - Documentação técnica dos componentes

A documentação técnica relativa ao microcontrolador Pic16F876, devido ao seu

elevado número de páginas, está apenas disponibilizada em formato digital no CD-

ROM.

Page 100: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA
Page 101: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Semiconductor Group 1 07/96

BUZ 100

SIPMOS ® Power Transistor

• N channel

• Enhancement mode

• Avalanche-rated

• dv/dt rated

• Ultra low on-resistance

• 175°C operating temperature

• also in TO-220 SMD available Pin 1 Pin 2 Pin 3

G D S

Type VDS ID RDS(on ) Package Ordering Code

BUZ 100 50 V 60 A 0.018 Ω TO-220 AB C67078-S1348-A2

Maximum Ratings

Parameter Symbol Values Unit

Continuous drain current

TC = 101 °C

ID 60

A

Pulsed drain current

TC = 25 °C

IDpuls

240

Avalanche energy, single pulse

ID = 60 A, VDD = 25 V, RGS = 25 Ω

L = 70 µH, Tj = 25 °C

EAS

250

mJ

Reverse diode dv/dt

IS = 60 A, VDS = 40 V, diF/dt = 200 A/µs

Tjmax = 175 °C

dv/dt

6

kV/µs

Gate source voltage VGS ± 20 V

Power dissipation

TC = 25 °C

Ptot

250

W

Operating temperature Tj -55 ... + 175 °C

Storage temperature Tstg -55 ... + 175

Thermal resistance, chip case RthJC ≤ 0.6 K/W

Thermal resistance, chip to ambient RthJA ≤ 75

DIN humidity category, DIN 40 040 E

IEC climatic category, DIN IEC 68-1 55 / 175 / 56

Page 102: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Semiconductor Group 2 07/96

BUZ 100

Electrical Characteristics, at Tj = 25°C, unless otherwise specified

Parameter Symbol Values Unit

min. typ. max.

Static Characteristics

Drain- source breakdown voltage

VGS = 0 V, ID = 0.25 mA, Tj = -40 °C

V(BR)DSS

50 - -

V

Gate threshold voltage

VGS=VDS, ID = 1 mA

VGS(th)

2.1 3 4

Zero gate voltage drain current

VDS = 50 V, VGS = 0 V, Tj = 25 °C

VDS = 50 V, VGS = 0 V, Tj = -40 °C

VDS = 50 V, VGS = 0 V, Tj = 150 °C

IDSS

-

-

-

10

1

0.1

100

100

1 µA

nA

µA

Gate-source leakage current

VGS = 20 V, VDS = 0 V

IGSS

- 10 100

nA

Drain-Source on-resistance

VGS = 10 V, ID = 60 A

RDS(on)

- 0.013 0.018

Ω

Page 103: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Semiconductor Group 3 07/96

BUZ 100

Electrical Characteristics, at Tj = 25°C, unless otherwise specified

Parameter Symbol Values Unit

min. typ. max.

Dynamic Characteristics

Transconductance

VDS≥ 2 * ID * RDS(on)max, ID = 60 A

gfs

25 39 -

S

Input capacitance

VGS = 0 V, VDS = 25 V, f = 1 MHz

Ciss

- 2400 3200

pF

Output capacitance

VGS = 0 V, VDS = 25 V, f = 1 MHz

Coss

- 800 1200

Reverse transfer capacitance

VGS = 0 V, VDS = 25 V, f = 1 MHz

Crss

- 300 450

Turn-on delay time

VDD = 30 V, VGS = 10 V, ID = 3 A

RGS = 50 Ω

td(on)

- 40 60

ns

Rise time

VDD = 30 V, VGS = 10 V, ID = 3 A

RGS = 50 Ω

tr

- 100 150

Turn-off delay time

VDD = 30 V, VGS = 10 V, ID = 3 A

RGS = 50 Ω

td(off)

- 250 335

Fall time

VDD = 30 V, VGS = 10 V, ID = 3 A

RGS = 50 Ω

tf

- 140 190

Page 104: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Semiconductor Group 4 07/96

BUZ 100

Electrical Characteristics, at Tj = 25°C, unless otherwise specified

Parameter Symbol Values Unit

min. typ. max.

Reverse Diode

Inverse diode continuous forward current

TC = 25 °C

IS- - 60

A

Inverse diode direct current,pulsed

TC = 25 °C

ISM

- - 240

Inverse diode forward voltage

VGS = 0 V, IF = 120 A

VSD

- 1.4 1.8

V

Reverse recovery time

VR = 30 V, IF=lS, diF/dt = 100 A/µs

trr- 70 -

ns

Reverse recovery charge

VR = 30 V, IF=lS, diF/dt = 100 A/µs

Qrr

- 0.16 -

µC

Page 105: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

5 07/96Semiconductor Group

BUZ 100

Drain current ID = ƒ(TC)

parameter: VGS ≥ 10 V

0 20 40 60 80 100 120 140 °C 180TC

0

5

10

15

20

25

30

35

40

45

50

55

A

65

ID

Power dissipation Ptot = ƒ(TC)

0 20 40 60 80 100 120 140 °C 180TC

0

20

40

60

80

100

120

140

160

180

200

220

W

260

Ptot

Safe operating area ID = ƒ(VDS)

parameter: D = 0.01, TC = 25°C

0 10

1 10

2 10

3 10

A

ID

10 0 10 1 10 2 V VDS

R DS(on) =

V DS

/ I D

DC

10 ms

1 ms

100 µs

tp = 30.0µs

Transient thermal impedance Zth JC = ƒ(tp)

parameter: D = tp / T

-4 10

-3 10

-2 10

-1 10

0 10

K/W

ZthJC

10 -7 10 -6 10 -5 10 -4 10 -3 10 -2 10 -1 10 0 s tp

single pulse

0.01

0.02

0.05

0.10

0.20

D = 0.50

Page 106: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Semiconductor Group 6 07/96

BUZ 100

Typ. output characteristics ID = ƒ(VDS)

parameter: tp = 80 µs

0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 V 5.0VDS

0 10

20

30

40

50

60

70

80

90

100

110

120

A

140

ID

VGS [V]

a

a 4.0

b

b 4.5

c

c 5.0

d

d 5.5

e

e 6.0f

f 6.5

g

g 7.0

h

h 7.5

i

i 8.0

j

j 9.0

k

k 10.0

lPtot = 250W

l 20.0

Typ. drain-source on-resistance RDS (on) = ƒ(ID)

parameter: VGS

0 20 40 60 80 A 120ID

0.000

0.005

0.010

0.015

0.020

0.025

0.030

0.035

0.040

0.045

Ω

0.055

RDS (on)

VGS [V] = a4.0

VGS [V] = a4.5

VGS [V] =

a

a5.0

b

b5.5

c

c6.0

d

d6.5

e

e7.0

f

f7.5

g

g8.0

h

h9.0

i

i10.0

j

j20.0

Typ. transfer characteristics ID = f (VGS)

parameter: tp = 80 µsVDS≥2 x ID x RDS(on)max

0 1 2 3 4 5 6 7 8 V 10 VGS

0

5

10

15

20

25

30

35

40

45

50

A

60

ID

Typ. forward transconductance gfs = f (ID)parameter: tp = 80 µs,VDS≥2 x ID x RDS(on)max

0 10 20 30 40 A 60 ID

0

5

10

15

20

25

30

S

40

gfs

Page 107: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

7 07/96Semiconductor Group

BUZ 100

Gate threshold voltage VGS (th) = ƒ(Tj)

parameter: VGS = VDS, ID = 1 mA

0.0

0.4

0.8

1.2

1.6

2.0

2.4

2.8

3.2

3.6

4.0

V

4.6

VGS(th)

-60 -20 20 60 100 °C 180Tj

2%

typ

98%

Drain-source on-resistance RDS (on) = ƒ(Tj)

parameter: ID = 60 A, VGS = 10 V

-60 -20 20 60 100 °C 180Tj

0.000

0.005

0.010

0.015

0.020

0.025

0.030

0.035

0.040

Ω

0.050

RDS (on)

typ

98%

Typ. capacitances

C = f (VDS)parameter:VGS = 0V, f = 1MHz

0 5 10 15 20 25 30 V 40 VDS

2 10

3 10

4 10

pF C

Ciss

Coss

Crss

Forward characteristics of reverse diode IF = ƒ(VSD)

parameter: Tj, tp = 80 µs

0 10

1 10

2 10

3 10

A

IF

0.0 0.4 0.8 1.2 1.6 2.0 2.4 V 3.0VSD

Tj = 25 °C typ

Tj = 25 °C (98%)

Tj = 175 °C typ

Tj = 175 °C (98%)

Page 108: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Semiconductor Group 8 07/96

BUZ 100

Avalanche energy EAS = ƒ(Tj)

parameter: ID = 60 A, VDD = 25 V

RGS = 25 Ω, L = 70 µH

20 40 60 80 100 120 140 °C 180Tj

0

20

40

60

80

100

120

140

160

180

200

220

mJ

260

EAS

Typ. gate charge VGS = ƒ(QGate)

parameter: ID puls = 90 A

0 10 20 30 40 50 60 70 80 nC 100QGate

0

2

4

6

8

10

12

V

16

VGS

DS maxV0,8

DS maxV0,2

Drain-source breakdown voltage V(BR)DSS = ƒ(Tj)

-60 -20 20 60 100 °C 180Tj

47 48

49

50

51

52

53

54

55

56

57

58

59

60

V

62

V(BR)DSS

Page 109: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Semiconductor Group 9 07/96

BUZ 100

Package OutlinesTO-220 ABDimension in mm

Page 110: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA
Page 111: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motormaxon motor control Encoder HEDS 550_Technical Documentation April 2000 edition

H

Quick AssemblyTwo and Three Channel OpticalEncoders

Technical Data

Features• Two Channel Quadrature

Output with Optional IndexPulse

• Quick and Easy Assembly• No Signal Adjustment

Required• External Mounting Ears

Available• Low Cost• Resolutions Up to 1024

Counts Per Revolution• Small Size• -40°C to 100°C Operating

Temperature• TTL Compatible• Single 5 V Supply

DescriptionThe HEDS-5500/5540, HEDS-5600/5640, and HEDM-5500/5600 are high performance, lowcost, two and three channeloptical incremental encoders.These encoders emphasize highreliability, high resolution, andeasy assembly.

Each encoder contains a lensedLED source, an integrated circuit

with detectors and outputcircuitry, and a codewheel whichrotates between the emitter anddetector IC. The outputs of theHEDS-5500/5600 and HEDM-5500/ 5600 are two square wavesin quadrature. The HEDS-5540and 5640 also have a third chan-nel index output in addition to thetwo channel quadrature. Thisindex output is a 90 electricaldegree, high true index pulsewhich is generated once for eachfull rotation of the codewheel.

The HEDS series utilizes metalcodewheels, while the HEDMseries utilizes a film codewheelallowing for resolutions to 1024CPR. The HEDM series is nontavailable with a third channelindex.

These encoders may be quicklyand easily mounted to a motor.For larger diameter motors, theHEDM-5600, and HEDS-5600/5640 feature external mountingears.

The quadrature signals and theindex pulse are accessed through

five 0.025 inch square pinslocated on 0.1 inch centers.

Standard resolutions between 96and 1024 counts per revolutionare presently available. Consultlocal Hewlett-Packard sales repre-sentatives for other resolutions.

ApplicationsThe HEDS-5500, 5540, 5600,5640, and the HEDM-5500, 5600provide motion detection at a lowcost, making them ideal for highvolume applications. Typicalapplications include printers,plotters, tape drives, positioningtables, and automatic handlers.

HEDM-550X/560XHEDS-550X/554XHEDS-560X/564X

ESD WARNING: NORMAL HANDLING PRECAUTIONS SHOULB BE TAKEN TO AVOID STATIC DISCHARGE

The latest edition of these operating instructions may also be found in the internet under:http://www.maxonmotor.com/Service&Support/Downloads/Tacho.htmalso refer to: http://www.semiconductor.agilent.com/motion/hedm550x.html

Page 112: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorEncoder HEDS 550_ Technical Documentation

2 maxon motor control April 2000 edition / subject to change

MO

TIO

N S

ENSI

NG

AN

D C

ON

TRO

L

Package Dimensions

HEDS-5500/5540, HEDM-5500

*Note: For the HEDS-5600 and HEDM-5600, Pin #2 is a No Connect. For the HEDS-5640, Pin #2 is CH. I, the index output.

HEDS-5600/5640, HEDM-5600

*Note: For the HEDS-5500 and HEDM-5500, Pin #2 is a No Connect. For the HEDS-5540, Pin #2 is CH. I, the index output.

Page 113: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorTechnical Documentation Encoder HEDS 550_

April 2000 edition / subject to change maxon motor control 3

Theory of OperationThe HEDS-5500, 5540, 5600,5640, and HEDM-5500, 5600translate the rotary motion of ashaft into either a two- or a three-channel digital output.

As seen in the block diagram,these encoders contain a singleLight Emitting Diode (LED) as itslight source. The light iscollimated into a parallel beam bymeans of a single polycarbonatelens located directly over theLED. Opposite the emitter is theintegrated detector circuit. ThisIC consists of multiple sets ofphotodetectors and the signalprocessing circuitry necessary toproduce the digital waveforms.

The codewheel rotates betweenthe emitter and detector, causingthe light beam to be interruptedby the pattern of spaces and barson the codewheel. Thephotodiodes which detect theseinterruptions are arranged in apattern that corresponds to theradius and design of thecodewheel. These detectors arealso spaced such that a lightperiod on one pair of detectorscorresponds to a dark period onthe adjacent pair of detectors. Thephotodiode outputs are then fedthrough the signal processingcircuitry resulting in A, A, B and B(also I and I in the HEDS-5540and 5640). Comparators receivethese signals and produce thefinal outputs for channels A andB. Due to this integrated phasingtechnique, the digital output ofchannel A is in quadrature withthat of channel B (90 degrees outof phase).

In the HEDS-5540 and 5640, theoutput of the comparator for Iand I is sent to the indexprocessing circuitry along withthe outputs of channels A and B.

Block Diagram

revolution.

Pulse Width (P): The number ofelectrical degrees that an outputis high during 1 cycle. This valueis nominally 180°e or 1/2 cycle.

Pulse Width Error ( ∆P): Thedeviation, in electrical degrees, ofthe pulse width from its idealvalue of 180°e.

State Width (S): The number ofelectrical degrees between atransition in the output of channelA and the neighboring transitionin the output of channel B. Thereare 4 states per cycle, eachnominally 90°e.

State Width Error ( ∆S): Thedeviation, in electrical degrees, ofeach state width from its idealvalue of 90°e.

Phase (φ): The number ofelectrical degrees between thecenter of the high state of channelA and the center of the high stateof channel B. This value isnominally 90°e for quadratureoutput.

Phase Error (∆φ): The deviationof the phase from its ideal valueof 90°e.

The final output of channel I is anindex pulse PO which is generatedonce for each full rotation of thecodewheel. This output PO is aone state width (nominally 90electrical degrees), high trueindex pulse which is coincidentwith the low states of channels Aand B.

DefinitionsCount (N): The number of barand window pairs or counts perrevolution (CPR) of thecodewheel.

One Cycle (C): 360 electricaldegrees (°e), 1 bar and windowpair.

One Shaft Rotation: 360mechanical degrees, N cycles.

Position Error ( ∆Θ): Thenormalized angular differencebetween the actual shaft positionand the position indicated by theencoder cycle count.

Cycle Error (∆C): An indicationof cycle uniformity. The differ-ence between an observed shaftangle which gives rise to oneelectrical cycle, and the nominalangular increment of 1/N of a

Page 114: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorEncoder HEDS 550_ Technical Documentation

4 maxon motor control April 2000 edition / subject to change

MO

TIO

N S

ENSI

NG

AN

D C

ON

TRO

L

Absolute Maximum Ratings

Parameter HEDS-55XX/56XX HEDM-550X/560X

Storage Temperature, TS -40°C to 100°C -40°C to +70°COperating Temperature, TA -40°C to 100°C -40°C to +70°CSupply Voltage, VCC -0.5 V to 7 V -0.5 V to 7 V

Output Voltage, VO -0.5 V to VCC -0.5 V to VCC

Output Current per Channel, IOUT -1.0 mA to 5 mA -1.0 mA to 5 mA

Vibration 20 g, 5 to 1000 Hz 20 g, 5 to 1000 Hz

Shaft Axial Play ± 0.25 mm (± 0.010 in.) ± 0.175 mm (± 0.007 in.)

Shaft Eccentricity Plus Radial Play 0.1 mm (0.004 in.) TIR 0.04 mm (0.0015 in.) TIR

Velocity 30,000 RPM 30,000 RPM

Acceleration 250,000 rad/sec2 250,000 rad/sec2

Output WaveformsDirection of Rotation: When thecodewheel rotates in the counter-clockwise direction (as viewedfrom the encoder end of themotor), channel A will leadchannel B. If the codewheelrotates in the clockwise direction,channel B will lead channel A.

Index Pulse Width (PO): Thenumber of electrical degrees thatan index output is high duringone full shaft rotation. This valueis nominally 90°e or 1/4 cycle.

Page 115: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorTechnical Documentation Encoder HEDS 550_

April 2000 edition / subject to change maxon motor control 5

Parameter Symbol Min. Typ. Max. Units Notes

Temperature HEDS Series TA -40 100 °C

Temperature HEDM Series TA -40 70 °C non-condensing atmosphere

Supply Voltage VCC 4.5 5.0 5.5 Volts Ripple < 100 mVp-p

Load Capacitance CL 100 pF 2.7 kΩ pull-up

Count Frequency f 100 kHz Velocity (rpm) x N/60

Shaft Perpendicularity ± 0.25 mm 6.9 mm (0.27 in.) fromPlus Axial Play (HEDS Series) (± 0.010) (in.) mounting surface

Shaft Eccentricity Plus 0.04 mm (in.) 6.9 mm (0.27 in.) fromRadial Play (HEDS Series) (0.0015) TIR mounting surface

Shaft Perpendicularity ± 0.175 mm 6.9 mm (0.27 in.) fromPlus Axial Play (HEDM Series) (± 0.007) (in.) mounting surface

Shaft Eccentricity Plus 0.04 mm (in.) 6.9 mm (0.27 in.) fromRadial Play(HEDM Series) (0.0015) TIR mounting surface

Note: The module performance is guaranteed to 100 kHz but can operate at higher frequencies. 2.7 kΩ pull-up resistorsrequired for HEDS-5540 and 5640.

Recommended Operating Conditions

Part No. Description Sym. Min. Typ.* Max. Units

HEDS-5500 Pulse Width Error ∆P 7 45 °eHEDS-5600 Logic State Width Error ∆S 5 45 °e(Two Channel) Phase Error ∆φ 2 20 °e

Position Error ∆Θ 10 40 min. of arcCycle Error ∆C 3 5.5 °e

HEDM-5500 Pulse Width Error ∆P 10 45 °eHEDM-5600 Logic State Width Error ∆S 10 45 °e(Two Channel) Phase Error ∆φ 2 15 °e

Position Error ∆Θ 10 40 min. of arcCycle Error ∆C 3 7.5 °e

HEDS-5540 Pulse Width Error ∆P 5 35 °eHEDS-5640 Logic State Width Error ∆S 5 35 °e(Three Phase Error ∆φ 2 15 °eChannel) Position Error ∆Θ 10 40 min. of arc

Cycle Error ∆C 3 5.5 °eIndex Pulse Width PO 55 90 125 °e

CH. I rise after -25°C to +100°C t1 10 100 250 nsCH. A or CH. B fall -40°C to +100°C t1 -300 100 250 ns

CH. I fall after -25°C to +100°C t2 70 150 300 nsCH. B or CH. A rise -40°C to +100°C t2 70 150 1000 ns

Note: See Mechanical Characteristics for mounting tolerances.*Typical values specified at VCC = 5.0 V and 25°C.

Encoding CharacteristicsEncoding Characteristics over Recommended Operating Range and Recommended Mounting Tolerancesunless otherwise specified. Values are for the worst error over the full rotation.

Page 116: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorEncoder HEDS 550_ Technical Documentation

6 maxon motor control April 2000 edition / subject to change

MO

TIO

N S

ENSI

NG

AN

D C

ON

TRO

L

Electrical CharacteristicsElectrical Characteristics over Recommended Operating Range.

Part No. Parameter Sym. Min. Typ.* Max. Units Notes

HEDS-5500 Supply Current ICC 17 40 mAHEDS-5600 High Level Output Voltage VOH 2.4 V IOH = -40 µA max.

Low Level Output Voltage VOL 0.4 V IOL = 3.2 mA

Rise Time tr 200 ns CL = 25 pFFall Time tf 50 ns RL = 11 kΩ pull-up

HEDS-5540 Supply Current ICC 30 57 85 mAHEDS-5640 High Level Output Voltage VOH 2.4 V IOH = -200 µA max.HEDM-5500 Low Level Output Voltage VOL 0.4 V IOL = 3.86 mA

Rise Time tr 180 ns CL = 25 pFFall Time tf 40 ns RL = 2.7 kΩ pull-up

HEDM-5500 Supply Current ICC 30 57 85 mAHEDM-5600 High Level Output Voltage VOH 2.4 V IOH = -40 µA max.

Low Level Output Voltage VOL 0.4 V IOL = 3.86 mA

Rise Time tr 180 ns CL = 25 pFFall Time tf 40 ns RL = 3.2 kΩ pull-up

*Typical values specified at VCC = 5.0 V and 25°C.

HEDM-5600

Page 117: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorTechnical Documentation Encoder HEDS 550_

April 2000 edition / subject to change maxon motor control 7

Electrical InterfaceTo insure reliable encodingperformance, the HEDS-5540 and5640 three channel encodersrequire 2.7 kΩ (± 10%) pull-upresistors on output pins 2, 3, and5 (Channels I, A, and B) as shownin Figure 1. These pull-upresistors should be located as

close to the encoder as possible(within 4 feet). Each of the threeencoder outputs can drive a singleTTL load in this configuration.

The HEDS-5500, 5600, andHEDM-5500, 5600 two channelencoders do not normally requirepull-up resistors. However, 3.2 kΩ

pull-up resistors on output pins 3and 5 (Channels A and B) arerecommended to improve risetimes, especially when operatingabove 100 kHz frequencies.

Mechanical Characteristics

Parameter Symbol Dimension Tolerance[1] Units

Codewheel Fits These 2 3 4 +0.000 mmStandard Shaft Diameters 5 6 8 -0.015

5/32 1/8 +0.0000 in3/16 1/4 -0.0007

Moment of Inertia J 0.6 (8.0 x 10-6) g-cm2 (oz-in-s2)

Required Shaft Length[2] 14.0 (0.55) ± 0.5 mm(± 0.02) (in.)

Bolt Circle[3] 2 screw 19.05 ± 0.13 mmmounting (0.750) (± 0.005) (in.)

3 screw 20.90 ± 0.13 mmmounting (0.823) (± 0.005) (in.)

external 46.0 ± 0.13 mmmounting ears (1.811) (± 0.005) (in.)

Mounting Screw Size[4] 2 screwmounting M 2.5 or (2-56) mm (in.)

3 screwmounting M 1.6 or (0-80) mm (in.)

externalmounting ears M 2.5 or (2-56) mm (in.)

Encoder Base Plate 0.33 (0.130) mm (in.)Thickness

Hub Set Screw (2-56) (in.)

Notes:1. These are tolerances required of the user.2. The HEDS-55X5 and 56X5, HEDM-5505, 5605 provide an 8.9 mm (0.35 inch) diameter hole through the housing for longer motorshafts. See Ordering Information.3. The HEDS-5540 and 5640 must be aligned using the aligning pins as specified in Figure 3, or using the alignment tool as shown in“Encoder Mounting and Assembly”. See also “Mounting Considerations.”4. The recommended mounting screw torque for 2 screw and external ear mounting is 1.0 kg-cm (0.88 in-lbs). The recommendedmounting screw torque for 3 screw mounting is 0.50 kg-cm (0.43 in-lbs).

Page 118: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorEncoder HEDS 550_ Technical Documentation

8 maxon motor control April 2000 edition / subject to change

MO

TIO

N S

ENSI

NG

AN

D C

ON

TRO

L

Mounting ConsiderationsThe HEDS-5540 and 5640 threechannel encoders and the HEDMSeries high resolution encodersmust be aligned using the aligningpins as specified in Figure 3, orusing the HEDS-8910 AlignmentTool as shown in EncoderMounting and Assembly.

The use of aligning pins oralignment tool is recommendedbut not required to mount theHEDS-5500 and 5600. If these

two channel encoders areattached to a motor with the screwsizes and mounting tolerancesspecified in the mechanicalcharacteristics section withoutany additional mounting bosses,the encoder output errors will bewithin the maximums specified inthe encoding characteristicssection.

The HEDS-5500 and 5540 can bemounted to a motor using eitherthe two screw or three screw

mounting option as shown inFigure 2. The optional aligningpins shown in Figure 3 can beused with either mounting option.

The HEDS-5600, 5640, andHEDM-5600 have externalmounting ears which may be usedfor mounting to larger motor baseplates. Figure 4 shows thenecessary mounting holes withoptional aligning pins and motorboss.

Figure 1. Pull-up Resistors on HEDS-5X40 Encoder Outputs.

Figure 3. Optional Mounting Aids.Figure 2. Mounting Holes.

11.10 / 10.94(0.438 / 0.431)

2.39 / 2.34(0.096 / 0.092)

Page 119: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorTechnical Documentation Encoder HEDS 550_

April 2000 edition / subject to change maxon motor control 9

Figure 4. Mounting with External Ears.

0.25 (0.010) X45° CHAMFER

2 PLACES

A Ø 0.15 (0.006)

2.39 / 2.34(0.096 / 0.092)

11.10 / 10.94(0.438 / 0.431)

0.8 (0.03) X 45° CHAMFER

O A 0.05 (0.002)

Page 120: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorEncoder HEDS 550_ Technical Documentation

10 maxon motor control April 2000 edition / subject to change

MO

TIO

N S

ENSI

NG

AN

D C

ON

TRO

L

3a. Push the hex wrench into the body of the encoder toensure that it is properly seated into the code wheel hub setscrews. Then apply a downward force on the end of the hexwrench. This sets the code wheel gap by levering the codewheel hub to its upper position.

3b. While continuing to apply a downward force, rotate thehex wrench in the clockwise direction until the hub setscrew is tight against the motor shaft. The hub set screwattaches the code wheel to the motor's shaft.

3c. Remove the hex wrench by pulling it straight out of theencoder body.

4. Use the center screwdriver slot, or either of the two sideslots, to rotate the encoder cap dot clockwise from the onedot position to the two dot position. Do not rotate theencoder cap counterclockwise beyond the one dot position.

The encoder is ready for use!

Encoder Mounting and Assembly

1. For HEDS-5500 and 5600: Mount encoder base plate ontomotor. Tighten screws. Go on to step 2.

1a. For HEDS-5540, 5640 and HEDM-5500, 5600: Slipalignment tool onto motor shaft. With alignment tool inplace, mount encoder baseplate onto motor as shown above.Tighten screws. Remove alignment tool.

2. Snap encoder body onto base plate locking all 4 snaps.

Page 121: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorTechnical Documentation Encoder HEDS 550_

April 2000 edition / subject to change maxon motor control 11

Connectors Manufacturer Part Number

AMP 103686-4640442-5

Dupont/Berg 65039-032 with 4825X-000 term.

HP HEDS-8902 (2 ch.) with 4-wire leads(designed to mechanically lock into theHEDS-5XXX, HEDM-5X0X Series) HEDS-8903 (3 ch.) with 5-wire leads

Molex 2695 series with 2759 series term.

Figure 5. HEDS-8902 and 8903 Connectors.

Typical Interfaces

HOSTPROCESSOR

HEDS–55XXOR

HEDS-56XXOR

HEDM-5X0X

HPHCTL-2016/

2020QUADRATURE

DECODER/COUNTER

CH. A

CH. B

HOSTPROCESSORCH. B

CH. AHEDS–55XX

ORHEDS-56XX

ORHEDM-5X0X

HPHCTL-1100

MOTIONCONTROL IC

*

*

N/A*

Page 122: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

maxon motorEncoder HEDS 550_ Technical Documentation

12 maxon motor control April 2000 edition / subject to change

MO

TIO

N S

ENSI

NG

AN

D C

ON

TRO

L

Ordering Information

HEDS-5 Option

Shaft Diameter01 - 2 mm 06 - 1/4 in.02 - 3 mm 11 - 4 mm03 - 1/8 in. 14 - 5 mm04 - 5/32 in. 12 - 6 mm05 - 3/16 in. 13 - 8 mm

Mounting Type5 - Standard6 - External

Mounting Ears

Through Hole0 - None5 - 8.9 mm (0.35 in.)

Outputs0 - 2 Channel4 - 3 Channel

Encoders with Metal Codewheels

HEDS-8910 0 Alignment Tool

(Included with each order of HEDS-554X/564X three channel encoders)

Shaft Diameter01 - 2 mm 06 - 1/4 in.02 - 3 mm 11 - 4 mm03 - 1/8 in. 14 - 5 mm04 - 5/32 in. 12 - 6 mm05 - 3/16 in. 13 - 8 mm

Mounting Type5 - Standard6 - External

Mounting Ears

Resolution (Cycles/Rev)B - 1000 CPRJ - 1024 CPR

Through Hole0 - None5 - 8.9 mm (0.35 in.)

Outputs0 - 2 Channel

Encoders with Film Codewheels

HEDS-8910 0 Alignment Tool

(Included with each order of HEDM-550X/560X two channel encoders)

HEDM-5 0 Option

Resolution (Cycles/Rev)(HEDS-550X, 560X 2 Channel)S - 50 CPR F - 256 CPR

K - 96 CPR G - 360 CPRC - 100 CPR H - 400 CPRD - 192 CPR A - 500 CPRE - 200 CPR I - 512 CPR

(HEDS-554X, 564X 3 Channel)S - 50 CPRK - 96 CPRC - 100 CPRE - 200 CPRF - 256 CPR

G - 360 CPRH - 400 CPRA - 500 CPRI - 512 CPR

Page 123: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

TL/H/7746

LM

78X

XSerie

sV

olta

ge

Regula

tors

February 1995

LM78XX Series Voltage Regulators

General DescriptionThe LM78XX series of three terminal regulators is available

with several fixed output voltages making them useful in a

wide range of applications. One of these is local on card

regulation, eliminating the distribution problems associated

with single point regulation. The voltages available allow

these regulators to be used in logic systems, instrumenta-

tion, HiFi, and other solid state electronic equipment. Al-

though designed primarily as fixed voltage regulators these

devices can be used with external components to obtain

adjustable voltages and currents.

The LM78XX series is available in an aluminum TO-3 pack-

age which will allow over 1.0A load current if adequate heat

sinking is provided. Current limiting is included to limit the

peak output current to a safe value. Safe area protection for

the output transistor is provided to limit internal power dissi-

pation. If internal power dissipation becomes too high for

the heat sinking provided, the thermal shutdown circuit

takes over preventing the IC from overheating.

Considerable effort was expanded to make the LM78XX se-

ries of regulators easy to use and mininize the number

of external components. It is not necessary to bypass the

output, although this does improve transient response. Input

bypassing is needed only if the regulator is located far from

the filter capacitor of the power supply.

For output voltage other than 5V, 12V and 15V the LM117

series provides an output voltage range from 1.2V to 57V.

FeaturesY Output current in excess of 1AY Internal thermal overload protectionY No external components requiredY Output transistor safe area protectionY Internal short circuit current limitY Available in the aluminum TO-3 package

Voltage RangeLM7805C 5V

LM7812C 12V

LM7815C 15V

Schematic and Connection Diagrams

TL/H/7746–1

Metal Can Package

TO-3 (K)

Aluminum

TL/H/7746–2

Bottom View

Order Number LM7805CK,

LM7812CK or LM7815CK

See NS Package Number KC02A

Plastic Package

TO-220 (T)

TL/H/7746–3

Top View

Order Number LM7805CT,

LM7812CT or LM7815CT

See NS Package Number T03B

C1995 National Semiconductor Corporation RRD-B30M115/Printed in U. S. A.

Page 124: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Absolute Maximum RatingsIf Military/Aerospace specified devices are required,

please contact the National Semiconductor Sales

Office/Distributors for availability and specifications.

Input Voltage (VO e 5V, 12V and 15V) 35V

Internal Power Dissipation (Note 1) Internally Limited

Operating Temperature Range (TA) 0§C to a70§C

Maximum Junction Temperature

(K Package) 150§C(T Package) 150§C

Storage Temperature Range b65§C to a150§CLead Temperature (Soldering, 10 sec.)

TO-3 Package K 300§CTO-220 Package T 230§C

Electrical Characteristics LM78XXC (Note 2) 0§C s Tj s 125§C unless otherwise noted.

Output Voltage 5V 12V 15V

Input Voltage (unless otherwise noted) 10V 19V 23V Units

Symbol Parameter Conditions Min Typ Max Min Typ Max Min Typ Max

VO Output Voltage Tj e 25§C, 5 mA s IO s 1A 4.8 5 5.2 11.5 12 12.5 14.4 15 15.6 V

PD s 15W, 5 mA s IO s 1A 4.75 5.25 11.4 12.6 14.25 15.75 V

VMIN s VIN s VMAX (7.5 s VIN s 20) (14.5 s VIN s 27) (17.5 s VIN s 30) V

DVO Line Regulation IO e 500 mA Tj e 25§C 3 50 4 120 4 150 mV

DVIN (7 s VIN s 25) 14.5 s VIN s 30) (17.5 s VIN s 30) V

0§C s Tj s a125§C 50 120 150 mV

DVIN (8 s VIN s 20) (15 s VIN s 27) (18.5 s VIN s 30) V

IO s 1A Tj e 25§C 50 120 150 mV

DVIN (7.5 s VIN s 20) (14.6 s VIN s 27) (17.7 s VIN s 30) V

0§C s Tj s a125§C 25 60 75 mV

DVIN (8 s VIN s 12) (16 s VIN s 22) (20 s VIN s 26) V

DVO Load Regulation Tj e 25§C 5 mA s IO s 1.5A 10 50 12 120 12 150 mV

250 mA s IO s 750 mA 25 60 75 mV

5 mA s IO s 1A, 0§C s Tj s a125§C 50 120 150 mV

IQ Quiescent Current IO s 1A Tj e 25§C 8 8 8 mA

0§C s Tj s a125§C 8.5 8.5 8.5 mA

DIQ Quiescent Current 5 mA s IO s 1A 0.5 0.5 0.5 mA

ChangeTj e 25§C, IO s 1A 1.0 1.0 1.0 mA

VMIN s VIN s VMAX (7.5 s VIN s 20) (14.8 s VINs 27) (17.9 s VIN s 30) V

IO s 500 mA, 0§C s Tj s a125§C 1.0 1.0 1.0 mA

VMIN s VIN s VMAX (7 s VIN s 25) (14.5 s VINs 30) (17.5 s VIN s 30) V

VN Output Noise Voltage TA e25§C, 10 Hz s f s 100 kHz 40 75 90 mV

DVIN

DVOUT

Ripple Rejection IO s 1A, Tj e 25§C or 62 80 55 72 54 70 dB

f e 120 Hz IO s 500 mA 62 55 54 dBÐ 0§C s Tj s a125§CVMIN s VIN s VMAX (8 s VIN s 18) (15 s VIN s 25) (18.5 s VIN s 28.5) V

RO Dropout Voltage Tj e 25§C, IOUT e 1A 2.0 2.0 2.0 V

Output Resistance f e 1 kHz 8 18 19 mX

Short-Circuit Current Tj e 25§C 2.1 1.5 1.2 A

Peak Output Current Tj e 25§C 2.4 2.4 2.4 A

Average TC of VOUT 0§C s Tj s a125§C, IO e 5 mA 0.6 1.5 1.8 mV/§C

VIN Input Voltage

Required to Maintain Tj e 25§C, IO s 1A 7.5 14.6 17.7 V

Line Regulation

Note 1: Thermal resistance of the TO-3 package (K, KC) is typically 4§C/W junction to case and 35§C/W case to ambient. Thermal resistance of the TO-220

package (T) is typically 4§C/W junction to case and 50§C/W case to ambient.

Note 2: All characteristics are measured with capacitor across the input of 0.22 mF, and a capacitor across the output of 0.1mF. All characteristics except noise

voltage and ripple rejection ratio are measured using pulse techniques (tw s 10 ms, duty cycle s 5%). Output voltage changes due to changes in internal

temperature must be taken into account separately.

2

Page 125: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Typical Performance Characteristics

Dissipation

Maximum Average Power

Dissipation

Maximum Average Power

Peak Output Current

to 1V at Tj e 25§C)

Output Voltage (Normalized

Ripple Rejection Ripple Rejection

Output Impedance Dropout Voltage Dropout Characteristics

Quiescent Current Quiescent Current

TL/H/7746–4

3

Page 126: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

4

Page 127: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Physical Dimensions inches (millimeters)

Aluminum Metal Can Package (KC)

Order Number LM7805CK, LM7812CK or LM7815CK

NS Package Number KC02A

5

Page 128: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

LM

78X

XSeries

Voltage

Regula

tors

Physical Dimensions inches (millimeters) (Continued)

TO-220 Package (T)

Order Number LM7805CT, LM7812CT or LM7815CT

NS Package Number T03B

LIFE SUPPORT POLICY

NATIONAL’S PRODUCTS ARE NOT AUTHORIZED FOR USE AS CRITICAL COMPONENTS IN LIFE SUPPORT

DEVICES OR SYSTEMS WITHOUT THE EXPRESS WRITTEN APPROVAL OF THE PRESIDENT OF NATIONAL

SEMICONDUCTOR CORPORATION. As used herein:

1. Life support devices or systems are devices or 2. A critical component is any component of a life

systems which, (a) are intended for surgical implant support device or system whose failure to perform can

into the body, or (b) support or sustain life, and whose be reasonably expected to cause the failure of the life

failure to perform, when properly used in accordance support device or system, or to affect its safety or

with instructions for use provided in the labeling, can effectiveness.

be reasonably expected to result in a significant injury

to the user.

National Semiconductor National Semiconductor National Semiconductor National SemiconductorCorporation Europe Hong Kong Ltd. Japan Ltd.1111 West Bardin Road Fax: (a49) 0-180-530 85 86 13th Floor, Straight Block, Tel: 81-043-299-2309Arlington, TX 76017 Email: cnjwge@ tevm2.nsc.com Ocean Centre, 5 Canton Rd. Fax: 81-043-299-2408Tel: 1(800) 272-9959 Deutsch Tel: (a49) 0-180-530 85 85 Tsimshatsui, KowloonFax: 1(800) 737-7018 English Tel: (a49) 0-180-532 78 32 Hong Kong

Fran3ais Tel: (a49) 0-180-532 93 58 Tel: (852) 2737-1600Italiano Tel: (a49) 0-180-534 16 80 Fax: (852) 2736-9960

National does not assume any responsibility for use of any circuitry described, no circuit patent licenses are implied and National reserves the right at any time without notice to change said circuitry and specifications.

Page 129: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

General DescriptionThe MAX220–MAX249 family of line drivers/receivers isintended for all EIA/TIA-232E and V.28/V.24 communica-tions interfaces, particularly applications where ±12V isnot available. These parts are especially useful in battery-powered sys-tems, since their low-power shutdown mode reducespower dissipation to less than 5µW. The MAX225,MAX233, MAX235, and MAX245/MAX246/MAX247 useno external components and are recommended for appli-cations where printed circuit board space is critical.

________________________ApplicationsPortable Computers

Low-Power Modems

Interface Translation

Battery-Powered RS-232 Systems

Multidrop RS-232 Networks

____________________________FeaturesSuperior to Bipolar♦ Operate from Single +5V Power Supply

(+5V and +12V—MAX231/MAX239)♦ Low-Power Receive Mode in Shutdown

(MAX223/MAX242)♦ Meet All EIA/TIA-232E and V.28 Specifications♦ Multiple Drivers and Receivers♦ 3-State Driver and Receiver Outputs♦ Open-Line Detection (MAX243)

Ordering Information

Ordering Information continued at end of data sheet.*Contact factory for dice specifications.

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

________________________________________________________________ Maxim Integrated Products 1

Selection Table

19-4323; Rev 10; 8/01

PARTMAX220CPEMAX220CSEMAX220CWE 0°C to +70°C

0°C to +70°C0°C to +70°C

TEMP. RANGE PIN-PACKAGE16 Plastic DIP16 Narrow SO16 Wide SO

MAX220C/D 0°C to +70°C Dice*MAX220EPEMAX220ESEMAX220EWE -40°C to +85°C

-40°C to +85°C-40°C to +85°C 16 Plastic DIP

16 Narrow SO16 Wide SO

MAX220EJE -40°C to +85°C 16 CERDIPMAX220MJE -55°C to +125°C 16 CERDIP

Power No. of Nominal SHDN RxPart Supply RS-232 No. of Cap. Value & Three- Active in Data RateNumber (V) Drivers/Rx Ext. Caps (µF) State SHDN (kbps) FeaturesMAX220 +5 2/2 4 0.1 No — 120 Ultra-low-power, industry-standard pinoutMAX222 +5 2/2 4 0.1 Yes — 200 Low-power shutdownMAX223 (MAX213) +5 4/5 4 1.0 (0.1) Yes 120 MAX241 and receivers active in shutdownMAX225 +5 5/5 0 — Yes 120 Available in SOMAX230 (MAX200) +5 5/0 4 1.0 (0.1) Yes — 120 5 drivers with shutdownMAX231 (MAX201) +5 and 2/2 2 1.0 (0.1) No — 120 Standard +5/+12V or battery supplies;

+7.5 to +13.2 same functions as MAX232MAX232 (MAX202) +5 2/2 4 1.0 (0.1) No — 120 (64) Industry standardMAX232A +5 2/2 4 0.1 No — 200 Higher slew rate, small capsMAX233 (MAX203) +5 2/2 0 — No — 120 No external capsMAX233A +5 2/2 0 — No — 200 No external caps, high slew rateMAX234 (MAX204) +5 4/0 4 1.0 (0.1) No — 120 Replaces 1488MAX235 (MAX205) +5 5/5 0 — Yes — 120 No external capsMAX236 (MAX206) +5 4/3 4 1.0 (0.1) Yes — 120 Shutdown, three stateMAX237 (MAX207) +5 5/3 4 1.0 (0.1) No — 120 Complements IBM PC serial portMAX238 (MAX208) +5 4/4 4 1.0 (0.1) No — 120 Replaces 1488 and 1489MAX239 (MAX209) +5 and 3/5 2 1.0 (0.1) No — 120 Standard +5/+12V or battery supplies;

+7.5 to +13.2 single-package solution for IBM PC serial portMAX240 +5 5/5 4 1.0 Yes — 120 DIP or flatpack packageMAX241 (MAX211) +5 4/5 4 1.0 (0.1) Yes — 120 Complete IBM PC serial portMAX242 +5 2/2 4 0.1 Yes 200 Separate shutdown and enableMAX243 +5 2/2 4 0.1 No — 200 Open-line detection simplifies cablingMAX244 +5 8/10 4 1.0 No — 120 High slew rateMAX245 +5 8/10 0 — Yes 120 High slew rate, int. caps, two shutdown modesMAX246 +5 8/10 0 — Yes 120 High slew rate, int. caps, three shutdown modesMAX247 +5 8/9 0 — Yes 120 High slew rate, int. caps, nine operating modesMAX248 +5 8/8 4 1.0 Yes 120 High slew rate, selective half-chip enablesMAX249 +5 6/10 4 1.0 Yes 120 Available in quad flatpack package

For pricing, delivery, and ordering information, please contact Maxim/Dallas Direct! at 1-888-629-4642, or visit Maxim’s website at www.maxim-ic.com.

Page 130: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

2 _______________________________________________________________________________________

ABSOLUTE MAXIMUM RATINGS—MAX220/222/232A/233A/242/243

ELECTRICAL CHARACTERISTICS—MAX220/222/232A/233A/242/243(VCC = +5V ±10%, C1–C4 = 0.1µF‚ MAX220, C1 = 0.047µF, C2–C4 = 0.33µF, TA = TMIN to TMAX‚ unless otherwise noted.)

Note 1: Input voltage measured with TOUT in high-impedance state, SHDN or VCC = 0V.Note 2: For the MAX220, V+ and V- can have a maximum magnitude of 7V, but their absolute difference cannot exceed 13V.Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. These are stress ratings only, and functionaloperation of the device at these or any other conditions beyond those indicated in the operational sections of the specifications is not implied. Exposure toabsolute maximum rating conditions for extended periods may affect device reliability.

Supply Voltage (VCC) ...............................................-0.3V to +6VInput VoltagesTIN..............................................................-0.3V to (VCC - 0.3V)RIN (Except MAX220) ........................................................±30VRIN (MAX220).....................................................................±25VTOUT (Except MAX220) (Note 1) .......................................±15VTOUT (MAX220)...............................................................±13.2V

Output VoltagesTOUT...................................................................................±15VROUT.........................................................-0.3V to (VCC + 0.3V)

Driver/Receiver Output Short Circuited to GND.........ContinuousContinuous Power Dissipation (TA = +70°C)16-Pin Plastic DIP (derate 10.53mW/°C above +70°C)....842mW18-Pin Plastic DIP (derate 11.11mW/°C above +70°C)....889mW

20-Pin Plastic DIP (derate 8.00mW/°C above +70°C) ..440mW16-Pin Narrow SO (derate 8.70mW/°C above +70°C) ...696mW16-Pin Wide SO (derate 9.52mW/°C above +70°C)......762mW18-Pin Wide SO (derate 9.52mW/°C above +70°C)......762mW20-Pin Wide SO (derate 10.00mW/°C above +70°C)....800mW20-Pin SSOP (derate 8.00mW/°C above +70°C) ..........640mW16-Pin CERDIP (derate 10.00mW/°C above +70°C).....800mW18-Pin CERDIP (derate 10.53mW/°C above +70°C).....842mW

Operating Temperature RangesMAX2_ _AC_ _, MAX2_ _C_ _.............................0°C to +70°CMAX2_ _AE_ _, MAX2_ _E_ _ ..........................-40°C to +85°CMAX2_ _AM_ _, MAX2_ _M_ _.......................-55°C to +125°C

Storage Temperature Range .............................-65°C to +160°CLead Temperature (soldering, 10sec) .............................+300°C

V1.4 0.8Input Logic Threshold Low

UNITSMIN TYP MAXPARAMETER CONDITIONS

Input Logic Threshold HighAll devices except MAX220 2 1.4

V

All except MAX220, normal operation 5 40Logic Pull-Up/lnput Current

SHDN = 0V, MAX222/242, shutdown, MAX220 ±0.01 ±1µA

VCC = 5.5V, SHDN = 0V, VOUT = ±15V, MAX222/242 ±0.01 ±10Output Leakage Current

VCC = SHDN = 0V, VOUT = ±15V ±0.01 ±10µA

200 116Data Rate kb/s

Transmitter Output Resistance VCC = V+ = V- = 0V, VOUT = ±2V 300 10M ΩOutput Short-Circuit Current VOUT = 0V ±7 ±22 mA

RS-232 Input Voltage Operating Range ±30 V

All except MAX243 R2IN 0.8 1.3RS-232 Input Threshold Low VCC = 5V

MAX243 R2IN (Note 2) -3V

All except MAX243 R2IN 1.8 2.4RS-232 Input Threshold High VCC = 5V

MAX243 R2IN (Note 2) -0.5 -0.1V

All except MAX243, VCC = 5V, no hysteresis in shdn. 0.2 0.5 1RS-232 Input Hysteresis

MAX243 1V

RS-232 Input Resistance 3 5 7 kΩTTL/CMOS Output Voltage Low IOUT = 3.2mA 0.2 0.4 V

TTL/CMOS Output Voltage High IOUT = -1.0mA 3.5 VCC - 0.2 V

Sourcing VOUT = GND -2 -10mATTL/CMOS Output Short-Circuit Current

Shrinking VOUT = VCC 10 30

V±5 ±8Output Voltage Swing All transmitter outputs loaded with 3kΩ to GND

RS-232 TRANSMITTERS

RS-232 RECEIVERS

2.4MAX220: VCC = 5.0V

Page 131: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

_______________________________________________________________________________________ 3

Note 3: MAX243 R2OUT is guaranteed to be low when R2IN is ≥ 0V or is floating.

ELECTRICAL CHARACTERISTICS—MAX220/222/232A/233A/242/243 (continued)(VCC = +5V ±10%, C1–C4 = 0.1µF‚ MAX220, C1 = 0.047µF, C2–C4 = 0.33µF, TA = TMIN to TMAX‚ unless otherwise noted.)

Operating Supply Voltage

SHDN Threshold High

4.5 5.5 V

MAX222/242

Transmitter-Output Enable Time (SHDN goes high), Figure 4

2.0 1.4 V

MAX220 0.5 2

tET

No loadMAX222/232A/233A/242/243 4 10

MAX222/232A/233A/242/243 6 12 30

MAX220 12VCC Supply Current (SHDN = VCC),Figures 5, 6, 11, 19 3kΩ load

both inputs MAX222/232A/233A/242/243 15

mA

Transition Slew Rate

TA = +25°C 0.1 10

CL = 50pF to 2500pF, RL = 3kΩ to 7kΩ,VCC = 5V, TA = +25°C,measured from +3V to -3V or -3V to +3V

TA = 0°C to +70°C

CONDITIONS

2 50

MAX220 1.5 3 30

V/µs

TA = -40°C to +85°C 2 50

MAX222/242, 0.1µF caps(includes charge-pump start-up)

Shutdown Supply Current MAX222/242

TA = -55°C to +125°C 35 100

µA

SHDN Input Leakage Current MAX222/242 ±1 µA

SHDN Threshold Low MAX222/242 1.4 0.8 V

250

MAX222/232A/233A/242/243 1.3 3.5

µs

tPHLTMAX220 4 10

Transmitter-Output Disable Time (SHDN goes low), Figure 4

tDT

MAX222/232A/233A/242/243 1.5 3.5

Transmitter Propagation DelayTLL to RS-232 (normal operation), Figure 1 tPLHT

MAX220 5 10

µs

V2.0 1.4

MAX222/242, 0.1µF caps

µA±0.05 ±10

600

TTL/CMOS Output Leakage Current

EN Input Threshold High

MAX222/232A/233A/242/243 0.5 1

ns

tPHLRMAX220 0.6 3

tPLHRMAX222/232A/233A/242/243 0.6 1

Receiver Propagation DelayRS-232 to TLL (normal operation),Figure 2

tPHLT - tPLHT

MAX220 0.8 3

µs

MAX222/232A/233A/242/243

tPHLS MAX242 0.5 10Receiver Propagation Delay RS-232 to TLL (shutdown), Figure 2 tPLHS MAX242 2.5 10

µs

Receiver-Output Enable Time, Figure 3 tER MAX242

UNITSMIN TYP MAX

125 500

PARAMETER

MAX242

ns

SHDN = VCC or EN = VCC (SHDN = 0V for MAX222),0V ≤ VOUT ≤ VCC

Receiver-Output Disable Time, Figure 3 tDR MAX242 160 500 ns

300ns

Transmitter + to - Propagation Delay Difference (normal operation) MAX220 2000

tPHLR - tPLHRMAX222/232A/233A/242/243 100

nsReceiver + to - Propagation Delay Difference (normal operation) MAX220 225

V1.4 0.8EN Input Threshold Low MAX242

Page 132: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

4 _______________________________________________________________________________________

__________________________________________Typical Operating Characteristics

MAX220/MAX222/MAX232A/MAX233A/MAX242/MAX243

10

8

-100 5 15 25

OUTPUT VOLTAGE vs. LOAD CURRENT

-4

-6

-8

-2

6

4

2

MAX

220-

01

LOAD CURRENT (mA)

OUTP

UT V

OLTA

GE (V

)

10

0

20

0.1µF

EITHER V+ OR V- LOADED

VCC = ±5VNO LOAD ONTRANSMITTER OUTPUTS(EXCEPT MAX220, MAX233A)

V- LOADED, NO LOAD ON V+

V+ LOADED, NO LOAD ON V-

1µF

1µF0.1µF

11

10

40 10 40 60

AVAILABLE OUTPUT CURRENTvs. DATA RATE

6

5

7

9

8

MAX

220-

02

DATA RATE (kbits/sec)

OUTP

UT C

URRE

NT (m

A)

20 30 50

OUTPUT LOAD CURRENTFLOWS FROM V+ TO V-

VCC = +5.25V

ALL CAPS1µF

ALL CAPS0.1µF

VCC = +4.75V

+10V

-10V

MAX222/MAX242ON-TIME EXITING SHUTDOWN

+5V+5V

0V

0V

MAX

220-

03

500µs/div

V+, V

- VOL

TAGE

(V)

1µF CAPSV+

V+

V-V-

SHDN

0.1µF CAPS

1µF CAPS

0.1µF CAPS

Page 133: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

_______________________________________________________________________________________ 5

VCC...........................................................................-0.3V to +6VV+................................................................(VCC - 0.3V) to +14VV- ............................................................................+0.3V to -14VInput VoltagesTIN ............................................................-0.3V to (VCC + 0.3V)RIN......................................................................................±30V

Output VoltagesTOUT ...................................................(V+ + 0.3V) to (V- - 0.3V)ROUT.........................................................-0.3V to (VCC + 0.3V)

Short-Circuit Duration, TOUT ......................................ContinuousContinuous Power Dissipation (TA = +70°C)14-Pin Plastic DIP (derate 10.00mW/°C above +70°C)....800mW16-Pin Plastic DIP (derate 10.53mW/°C above +70°C)....842mW20-Pin Plastic DIP (derate 11.11mW/°C above +70°C)....889mW24-Pin Narrow Plastic DIP

(derate 13.33mW/°C above +70°C) ..........1.07W24-Pin Plastic DIP (derate 9.09mW/°C above +70°C)......500mW16-Pin Wide SO (derate 9.52mW/°C above +70°C).........762mW

20-Pin Wide SO (derate 10 00mW/°C above +70°C).......800mW24-Pin Wide SO (derate 11.76mW/°C above +70°C).......941mW28-Pin Wide SO (derate 12.50mW/°C above +70°C) .............1W44-Pin Plastic FP (derate 11.11mW/°C above +70°C) .....889mW14-Pin CERDIP (derate 9.09mW/°C above +70°C) ..........727mW16-Pin CERDIP (derate 10.00mW/°C above +70°C) ........800mW20-Pin CERDIP (derate 11.11mW/°C above +70°C) ........889mW24-Pin Narrow CERDIP

(derate 12.50mW/°C above +70°C) ..............1W24-Pin Sidebraze (derate 20.0mW/°C above +70°C)..........1.6W28-Pin SSOP (derate 9.52mW/°C above +70°C).............762mW

Operating Temperature RangesMAX2 _ _ C _ _......................................................0°C to +70°CMAX2 _ _ E _ _ ...................................................-40°C to +85°CMAX2 _ _ M _ _ ...............................................-55°C to +125°C

Storage Temperature Range .............................-65°C to +160°CLead Temperature (soldering, 10sec) .............................+300°C

ABSOLUTE MAXIMUM RATINGS—MAX223/MAX230–MAX241

ELECTRICAL CHARACTERISTICS—MAX223/MAX230–MAX241(MAX223/230/232/234/236/237/238/240/241, VCC = +5V ±10; MAX233/MAX235, VCC = 5V ±5%‚ C1–C4 = 1.0µF; MAX231/MAX239,VCC = 5V ±10%; V+ = 7.5V to 13.2V; TA = TMIN to TMAX; unless otherwise noted.)

Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. These are stress ratings only, and functionaloperation of the device at these or any other conditions beyond those indicated in the operational sections of the specifications is not implied. Exposure toabsolute maximum rating conditions for extended periods may affect device reliability.

CONDITIONS MIN TYP MAX UNITS

Output Voltage Swing All transmitter outputs loaded with 3kΩ to ground ±5.0 ±7.3 V

VCC Power-Supply CurrentNo load,TA = +25°C

5 10

mA7 15

0.4 1

V+ Power-Supply Current1.8 5

mA5 15

Shutdown Supply Current TA = +25°C15 50

VInput Logic Threshold High

TIN 2.0

EN, SHDN (MAX223);EN, SHDN (MAX230/235/236/240/241)

2.4

Logic Pull-Up Current TIN = 0V 1.5 200

Receiver Input VoltageOperating Range

-30 30 V

µA

µA1 10

VInput Logic Threshold Low TIN; EN, SHDN (MAX233); EN, SHDN (MAX230/235–241) 0.8

MAX231/239

MAX223/230/234–238/240/241

MAX232/233

PARAMETER

MAX239

MAX230/235/236/240/241

MAX231

MAX223

Page 134: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

mA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

6 _______________________________________________________________________________________

V

0.8 1.2

PARAMETER MIN TYP MAX UNITSCONDITIONS

Normal operationSHDN = 5V (MAX223)SHDN = 0V (MAX235/236/240/241)

1.7 2.4

RS-232 Input Threshold LowTA = +25°C, VCC = 5V

0.6 1.5

VRS-232 Input Threshold HighTA = +25°C,VCC = 5V Shutdown (MAX223)

SHDN = 0V,EN = 5V (R4IN‚ R5IN)

1.5 2.4

ELECTRICAL CHARACTERISTICS—MAX223/MAX230–MAX241 (continued)(MAX223/230/232/234/236/237/238/240/241, VCC = +5V ±10; MAX233/MAX235, VCC = 5V ±5%‚ C1–C4 = 1.0µF; MAX231/MAX239,VCC = 5V ±10%; V+ = 7.5V to 13.2V; TA = TMIN to TMAX; unless otherwise noted.)

Shutdown (MAX223)SHDN = 0V,EN = 5V (R4IN, R5IN)

Normal operationSHDN = 5V (MAX223)SHDN = 0V (MAX235/236/240/241)

RS-232 Input Hysteresis VCC = 5V, no hysteresis in shutdown 0.2 0.5 1.0 V

RS-232 Input Resistance TA = +25°C, VCC = 5V 3 5 7 kΩ

TTL/CMOS Output Voltage Low IOUT = 1.6mA (MAX231/232/233, IOUT = 3.2mA) 0.4 V

TTL/CMOS Output Voltage High IOUT = -1mA 3.5 VCC - 0.4 V

TTL/CMOS Output Leakage Current0V ≤ ROUT ≤ VCC; EN = 0V (MAX223); EN = VCC (MAX235–241 )

0.05 ±10 µA

MAX223 600nsReceiver Output Enable Time

Normaloperation MAX235/236/239/240/241 400

MAX223 900nsReceiver Output Disable Time

Normaloperation MAX235/236/239/240/241 250

Normal operation 0.5 10

µsSHDN = 0V(MAX223)

4 40Propagation DelayRS-232 IN toTTL/CMOS OUT,CL = 150pF 6 40

3 5.1 30

V/µsMAX231/MAX232/MAX233, TA = +25°C, VCC = 5V, RL = 3kΩ to 7kΩ, CL = 50pF to 2500pF, measured from+3V to -3V or -3V to +3V

4 30

Transmitter Output Resistance VCC = V+ = V- = 0V, VOUT = ±2V 300 Ω

Transmitter Output Short-CircuitCurrent

±10 mA

tPHLS

tPLHS

Transition Region Slew Rate

MAX223/MAX230/MAX234–241, TA = +25°C, VCC = 5V, RL = 3kΩ to 7kΩ‚ CL = 50pF to 2500pF, measured from+3V to -3V or -3V to +3V

Page 135: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

_______________________________________________________________________________________ 7

8.5

6.54.5 5.5

TRANSMITTER OUTPUTVOLTAGE (VOH) vs. VCC

7.0

8.0

MAX

220-

04

VCC (V)

V OH

(V)

5.0

7.5

1 TRANSMITTERLOADED

3 TRANS-MITTERSLOADED

4 TRANSMITTERSLOADED

2 TRANSMITTERSLOADED

TA = +25°CC1–C4 = 1µFTRANSMITTERLOADS =3kΩ || 2500pF

7.4

6.00 2500

TRANSMITTER OUTPUT VOLTAGE (VOH)vs. LOAD CAPACITANCE AT

DIFFERENT DATA RATES

6.4

6.2

7.2

7.0

MAX

220-

05

LOAD CAPACITANCE (pF)

V OH

(V)

15001000500 2000

6.8

6.6

160kbits/sec80kbits/sec20kbits/sec

TA = +25°CVCC = +5V3 TRANSMITTERS LOADEDRL = 3kΩC1–C4 = 1µF

12.0

4.00 2500

TRANSMITTER SLEW RATEvs. LOAD CAPACITANCE

6.0

5.0

11.0

9.0

10.0

MAX

220-

06

LOAD CAPACITANCE (pF)

SLEW

RAT

E (V

/µs)

15001000500 2000

8.0

7.0

TA = +25°CVCC = +5VLOADED, RL = 3kΩC1–C4 = 1µF

1 TRANSMITTER LOADED

2 TRANSMITTERS LOADED

3 TRANSMITTERS LOADED

4 TRANSMITTERS LOADED

-6.0

-9.04.5 5.5

TRANSMITTER OUTPUTVOLTAGE (VOL) vs. VCC

-8.0

-8.5

-6.5

-7.0

MAX

220-

07

VCC (V)

V OL (

V)

5.0

-7.5

4 TRANS-MITTERSLOADED

TA = +25°CC1–C4 = 1µFTRANSMITTERLOADS =3kΩ || 2500pF

1 TRANS-MITTERLOADED

2 TRANS-MITTERSLOADED

3 TRANS-MITTERSLOADED

-6.0

-7.60 2500

TRANSMITTER OUTPUT VOLTAGE (VOL) vs. LOAD CAPACITANCE AT

DIFFERENT DATA RATES

-7.0

-7.2

-7.4

-6.2

-6.4

MAX

220-

08

LOAD CAPACITANCE (pF)

V OL (

V)

15001000500 2000

-6.6

-6.8 160kbits/sec80kbits/sec20Kkbits/sec

TA = +25°CVCC = +5V3 TRANSMITTERS LOADEDRL = 3kΩC1–C4 = 1µF

10

-100 5 10 15 20 25 30 35 40 45 50

TRANSMITTER OUTPUT VOLTAGE (V+, V-)vs. LOAD CURRENT

-2

-6

-4

-8

8

6

MAX

220-

09CURRENT (mA)

V+, V

- (V)

4

2

0V+ AND V-EQUALLYLOADED

V- LOADED,NO LOADON V+

TA = +25°CVCC = +5VC1–C4 = 1µF

ALL TRANSMITTERS UNLOADED

V+ LOADED,NO LOADON V-

__________________________________________Typical Operating CharacteristicsMAX223/MAX230–MAX241

*SHUTDOWN POLARITY IS REVERSED FOR NON MAX241 PARTS

V+, V- WHEN EXITING SHUTDOWN(1µF CAPACITORS)

MAX220-13

SHDN*

V-

O

V+

500ms/div

Page 136: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Input Logic Threshold Low

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

8 _______________________________________________________________________________________

ABSOLUTE MAXIMUM RATINGS—MAX225/MAX244–MAX249

ELECTRICAL CHARACTERISTICS—MAX225/MAX244–MAX249(MAX225, VCC = 5.0V ±5%; MAX244–MAX249, VCC = +5.0V ±10%, external capacitors C1–C4 = 1µF; TA = TMIN to TMAX; unless oth-erwise noted.)

Note 4: Input voltage measured with transmitter output in a high-impedance state, shutdown, or VCC = 0V.Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. These are stress ratings only, and functionaloperation of the device at these or any other conditions beyond those indicated in the operational sections of the specifications is not implied. Exposure toabsolute maximum rating conditions for extended periods may affect device reliability.

Supply Voltage (VCC) ...............................................-0.3V to +6VInput VoltagesTIN‚ ENA, ENB, ENR, ENT, ENRA,ENRB, ENTA, ENTB..................................-0.3V to (VCC + 0.3V)RIN .....................................................................................±25VTOUT (Note 3).....................................................................±15VROUT ........................................................-0.3V to (VCC + 0.3V)

Short Circuit (one output at a time)TOUT to GND............................................................ContinuousROUT to GND............................................................Continuous

Continuous Power Dissipation (TA = +70°C)28-Pin Wide SO (derate 12.50mW/°C above +70°C) .............1W40-Pin Plastic DIP (derate 11.11mW/°C above +70°C) ...611mW44-Pin PLCC (derate 13.33mW/°C above +70°C) ...........1.07W

Operating Temperature RangesMAX225C_ _, MAX24_C_ _ ..................................0°C to +70°CMAX225E_ _, MAX24_E_ _ ...............................-40°C to +85°C

Storage Temperature Range .............................-65°C to +160°CLead Temperature (soldering,10sec) ..............................+300°C

VCC = 0V, VOUT = ±15V

µATables 1a–1d

±0.01 ±25

Normal operation

Shutdown

Tables 1a–1d, normal operation

All transmitter outputs loaded with 3kΩ to GND

ENA, ENB, ENT, ENTA, ENTB =VCC, VOUT = ±15V

VRS-232 Input Hysteresis

RS-232 Input Threshold Low V

V±5 ±7.5Output Voltage Swing

Output Leakage Current (shutdown)

±0.01 ±25

Ω300 10MVCC = V+ = V- = 0V, VOUT = ±2V (Note 4)Transmitter Output Resistance

µA

PARAMETER

±0.05 ±0.10

MIN TYP MAX UNITS

Normal operation, outputs disabled,Tables 1a–1d, 0V ≤ VOUT ≤ VCC, ENR_ = VCC

TTL/CMOS Output Leakage Current

10 30Shrinking VOUT = VCCmA

-2 -10Sourcing VOUT = GND

V3.5 VCC - 0.2IOUT = -1.0mATTL/CMOS Output Voltage High

V0.2 0.4IOUT = 3.2mATTL/CMOS Output Voltage Low

kΩ3 5 7

0.2 0.5 1.0VCC = 5V

1.4 0.8 V

TTL/CMOS Output Short-Circuit Current

V1.8 2.4

0.8 1.3VCC = 5V

RS-232 Input Resistance

V±25RS-232 Input Voltage Operating Range

mA±7 ±30VOUT = 0VOutput Short-Circuit Current

kbits/sec120 64Data Rate

CONDITIONS

VCC = 5V

µA±0.01 ±1

Logic Pull-Up/lnput Current10 50

Tables 1a–1d

RS-232 Input Threshold High

V2 1.4Input Logic Threshold High

RS-232 TRANSMITTERS

RS-232 RECEIVERS

Page 137: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

_______________________________________________________________________________________ 9

Operating Supply Voltage4.75 5.25

V

Transmitter Enable Time

MAX225 10 20

tET

No loadMAX244–MAX249 11 30

5 10 30

MAX225 40VCC Supply Current (normal operation) 3kΩ loads on

all outputs MAX244–MAX249 57

mA

Transition Slew Rate

8 25

CL = 50pF to 2500pF, RL = 3kΩ to 7kΩ, VCC = 5V, TA = +25°C, measured from +3V to -3V or -3V to +3V

TA = TMIN to TMAX

CONDITIONS

50

V/µs

MAX246–MAX249(excludes charge-pump start-up)

Shutdown Supply Current µA

5

tPHLT 1.3 3.5

µs

tPLHT 1.5 3.5

Transmitter Disable Time, Figure 4

Transmitter Propagation DelayTLL to RS-232 (normal operation), Figure 1

µs

tDT 100 ns

Transmitter + to - Propagation Delay Difference (normal operation)

tPHLT - tPLHT

UNITSMIN TYP MAX

350

PARAMETER

ns

Receiver + to - Propagation Delay Difference (normal operation)

tPHLR - tPLHR 350 ns

4.5 5.5MAX244–MAX249

MAX225

Leakage current ±1

Threshold low 1.4 0.8Control Input

Threshold high 2.4 1.4V

µA

TA = +25°C

tPHLR 0.6 1.5

tPLHR 0.6 1.5

Receiver Propagation DelayTLL to RS-232 (normal operation),Figure 2

µs

tPHLS 0.6 10

tPLHS 3.0 10

Receiver Propagation Delay TLL to RS-232 (low-power mode), Figure 2

µs

Receiver-Output Enable Time, Figure 3 tER 100 500 ns

Receiver-Output Disable Time, Figure 3 tDR 100 500 ns

MAX225/MAX245–MAX249(includes charge-pump start-up)

10 ms

POWER SUPPLY AND CONTROL LOGIC

AC CHARACTERISTICS

Note 5: The 300Ω minimum specification complies with EIA/TIA-232E, but the actual resistance when in shutdown mode or VCC =0V is 10MΩ as is implied by the leakage specification.

ELECTRICAL CHARACTERISTICS—MAX225/MAX244–MAX249 (continued)(MAX225, VCC = 5.0V ±5%; MAX244–MAX249, VCC = +5.0V ±10%, external capacitors C1–C4 = 1µF; TA = TMIN to TMAX; unless oth-erwise noted.)

Page 138: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

10 ______________________________________________________________________________________

__________________________________________Typical Operating Characteristics

MAX225/MAX244–MAX249

18

20 1 2 3 4 5

TRANSMITTER SLEW RATEvs. LOAD CAPACITANCE

8

6

4

16 MAX

220-

10

LOAD CAPACITANCE (nF)

TRAN

SMIT

TER

SLEW

RAT

E (V

/µs)

14

12

10

VCC = 5V

EXTERNAL POWER SUPPLY1µF CAPACITORS

40kb/s DATA RATE 8 TRANSMITTERSLOADED WITH 3kΩ

10

-100 5 10 15 20 25 30 35

OUTPUT VOLTAGEvs. LOAD CURRENT FOR V+ AND V-

-2

-4

-6

-8

8

MAX

220-

11

LOAD CURRENT (mA)

OUTP

UT V

OLTA

GE (V

)

6

4

2

0

V+ AND V- LOADEDEITHER V+ OR V- LOADED

V+ AND V- LOADED

VCC = 5VEXTERNAL CHARGE PUMP1µF CAPACITORS 8 TRANSMITTERSDRIVING 5kΩ AND2000pF AT 20kbits/sec

V- LOADED

V+ LOADED

9.0

5.00 1 2 3 4 5

TRANSMITTER OUTPUT VOLTAGE (V+, V-)vs. LOAD CAPACITANCE AT

DIFFERENT DATA RATES

6.0

5.5

8.5 MAX

220-

12

LOAD CAPACITANCE (nF)

V+, V

(V)

8.0

7.5

7.0

6.5

VCC = 5V WITH ALL TRANSMITTERS DRIVENLOADED WITH 5kΩ

10kb/sec

20kb/sec

40kb/sec

60kb/sec

100kb/sec200kb/sec

ALL CAPACITIORS 1µF

Page 139: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 11

INPUT

OUTPUT

+3V

V+

0VV-

0V

tPLHT tPHLT

tPHLRtPHLS

tPLHRtPLHS

50%VCC

50%+3V

50%INPUT

OUTPUT

*EXCEPT FOR R2 ON THE MAX243 WHERE -3V IS USED.

0V*

50%GND

Figure 1. Transmitter Propagation-Delay Timing Figure 2. Receiver Propagation-Delay Timing

EN

RX IN

a) TEST CIRCUIT

b) ENABLE TIMING

c) DISABLE TIMING

EN INPUT

RECEIVEROUTPUTS

RX OUTRX

1k

0V

+3V

EN

EN

+0.8V

+3.5V

OUTPUT ENABLE TIME (tER)

VCC - 2V

VOL + 0.5V

VOH - 0.5V

OUTPUT DISABLE TIME (tDR)

VCC - 2V

+3V

0V

150pF

EN INPUT

VOH

RECEIVEROUTPUTS

VOL

1 OR 0 TX

3k 50pF

-5V

+5V

OUTPUT DISABLE TIME (tDT)V+

SHDN+3V

0V

V-

0V

a) TIMING DIAGRAM

b) TEST CIRCUIT

Figure 3. Receiver-Output Enable and Disable Timing Figure 4. Transmitter-Output Disable Timing

Page 140: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

12 ______________________________________________________________________________________

ENT ENR OPERATION STATUS TRANSMITTERS RECEIVERS

0 0 Normal Operation All Active All Active

0 1 Normal Operation All Active All 3-State

1 0 Shutdown All 3-State All Low-Power Receive Mode

1 1 Shutdown All 3-State All 3-State

Table 1a. MAX245 Control Pin Configurations

ENT ENROPERATION

STATUSTRANSMITTERS RECEIVERS

TA1–TA4 TB1–TB4 RA1–RA5 RB1–RB5

0 0 Normal Operation All Active All Active All Active All Active

0 1 Normal Operation All Active All ActiveRA1–RA4 3-State,RA5 Active

RB1–RB4 3-State,RB5 Active

1 0 Shutdown All 3-State All 3-StateAll Low-PowerReceive Mode

All Low-PowerReceive Mode

1 1 Shutdown All 3-State All 3-StateRA1–RA4 3-State,RA5 Low-PowerReceive Mode

RB1–RB4 3-State,RB5 Low-PowerReceive Mode

Table 1b. MAX245 Control Pin Configurations

Table 1c. MAX246 Control Pin Configurations

ENA ENBOPERATION

STATUSTRANSMITTERS RECEIVERS

TA1–TA4 TB1–TB4 RA1–RA5 RB1–RB5

0 0 Normal Operation All Active All Active All Active All Active

0 1 Normal Operation All Active All 3-State All ActiveRB1–RB4 3-State,RB5 Active

1 0 Shutdown All 3-State All ActiveRA1–RA4 3-State,RA5 Active

All Active

1 1 Shutdown All 3-State All 3-StateRA1–RA4 3-State,RA5 Low-PowerReceive Mode

RB1–RB4 3-State,RA5 Low-PowerReceive Mode

Page 141: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 13

TA1–TA4 TB1–TB4 RA1–RA4 RB1–RB4

0 0 0 0 Normal Operation All Active All Active All Active All Active

0 0 0 1 Normal Operation All Active All Active All ActiveAll 3-State, exceptRB5 stays active onMAX247

0 0 1 0 Normal Operation All Active All Active All 3-State All Active

0 0 1 1 Normal Operation All Active All Active All 3-StateAll 3-State, exceptRB5 stays active onMAX247

0 1 0 0 Normal Operation All Active All 3-State All Active All Active

0 1 0 1 Normal Operation All Active All 3-State All ActiveAll 3-State, exceptRB5 stays active onMAX247

0 1 1 0 Normal Operation All Active All 3-State All 3-State All Active

0 1 1 1 Normal Operation All Active All 3-State All 3-StateAll 3-State, exceptRB5 stays active onMAX247

1 0 0 0 Normal Operation All 3-State All Active All Active All Active

1 0 0 1 Normal Operation All 3-State All Active All ActiveAll 3-State, exceptRB5 stays active onMAX247

1 0 1 0 Normal Operation All 3-State All Active All 3-State All Active

1 0 1 1 Normal Operation All 3-State All Active All 3-StateAll 3-State, exceptRB5 stays active onMAX247

1 1 0 0 Shutdown All 3-State All 3-StateLow-PowerReceive Mode

Low-PowerReceive Mode

1 1 0 1 Shutdown All 3-State All 3-StateLow-PowerReceive Mode

All 3-State, exceptRB5 stays active onMAX247

1 1 1 0 Shutdown All 3-State All 3-State All 3-StateLow-PowerReceive Mode

1 1 1 1 Shutdown All 3-State All 3-State All 3-StateAll 3-State, exceptRB5 stays active onMAX247

Table 1d. MAX247/MAX248/MAX249 Control Pin Configurations

MAX248OPERATION

STATUSENRBMAX247 TA1–TA4 TB1–TB4 RA1–RA4 RB1–RB5

TRANSMITTERS

ENRAENTBENTA

MAX249 TA1–TA3 TB1–TB3 RA1–RA5 RB1–RB5

RECEIVERS

Page 142: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49 _______________Detailed Description

The MAX220–MAX249 contain four sections: dualcharge-pump DC-DC voltage converters, RS-232 dri-vers, RS-232 receivers, and receiver and transmitterenable control inputs.

Dual Charge-Pump Voltage ConverterThe MAX220–MAX249 have two internal charge-pumpsthat convert +5V to ±10V (unloaded) for RS-232 driveroperation. The first converter uses capacitor C1 to dou-ble the +5V input to +10V on C3 at the V+ output. Thesecond converter uses capacitor C2 to invert +10V to -10V on C4 at the V- output.

A small amount of power may be drawn from the +10V(V+) and -10V (V-) outputs to power external circuitry(see the Typical Operating Characteristics section),except on the MAX225 and MAX245–MAX247, wherethese pins are not available. V+ and V- are not regulated,so the output voltage drops with increasing load current.Do not load V+ and V- to a point that violates the mini-mum ±5V EIA/TIA-232E driver output voltage whensourcing current from V+ and V- to external circuitry.

When using the shutdown feature in the MAX222,MAX225, MAX230, MAX235, MAX236, MAX240,MAX241, and MAX245–MAX249, avoid using V+ and V-to power external circuitry. When these parts are shutdown, V- falls to 0V, and V+ falls to +5V. For applica-tions where a +10V external supply is applied to the V+pin (instead of using the internal charge pump to gen-erate +10V), the C1 capacitor must not be installed andthe SHDN pin must be tied to VCC. This is because V+is internally connected to VCC in shutdown mode.

RS-232 DriversThe typical driver output voltage swing is ±8V whenloaded with a nominal 5kΩ RS-232 receiver and VCC =+5V. Output swing is guaranteed to meet the EIA/TIA-232E and V.28 specification, which calls for ±5V mini-mum driver output levels under worst-case conditions.These include a minimum 3kΩ load, VCC = +4.5V, andmaximum operating temperature. Unloaded driver out-put voltage ranges from (V+ -1.3V) to (V- +0.5V).

Input thresholds are both TTL and CMOS compatible.The inputs of unused drivers can be left unconnectedsince 400kΩ input pull-up resistors to VCC are built in(except for the MAX220). The pull-up resistors force theoutputs of unused drivers low because all drivers invert.The internal input pull-up resistors typically source 12µA,except in shutdown mode where the pull-ups are dis-abled. Driver outputs turn off and enter a high-imped-ance state—where leakage current is typicallymicroamperes (maximum 25µA)—when in shutdown

mode, in three-state mode, or when device power isremoved. Outputs can be driven to ±15V. The power-supply current typically drops to 8µA in shutdown mode.The MAX220 does not have pull-up resistors to force theoutputs of the unused drivers low. Connect unusedinputs to GND or VCC.

The MAX239 has a receiver three-state control line, andthe MAX223, MAX225, MAX235, MAX236, MAX240,and MAX241 have both a receiver three-state controlline and a low-power shutdown control. Table 2 showsthe effects of the shutdown control and receiver three-state control on the receiver outputs.

The receiver TTL/CMOS outputs are in a high-imped-ance, three-state mode whenever the three-state enableline is high (for the MAX225/MAX235/MAX236/MAX239–MAX241), and are also high-impedance whenever theshutdown control line is high.

When in low-power shutdown mode, the driver outputsare turned off and their leakage current is less than 1µAwith the driver output pulled to ground. The driver outputleakage remains less than 1µA, even if the transmitteroutput is backdriven between 0V and (VCC + 6V). Below-0.5V, the transmitter is diode clamped to ground with1kΩ series impedance. The transmitter is also zenerclamped to approximately VCC + 6V, with a seriesimpedance of 1kΩ.

The driver output slew rate is limited to less than 30V/µsas required by the EIA/TIA-232E and V.28 specifica-tions. Typical slew rates are 24V/µs unloaded and10V/µs loaded with 3Ω and 2500pF.

RS-232 ReceiversEIA/TIA-232E and V.28 specifications define a voltagelevel greater than 3V as a logic 0, so all receivers invert.Input thresholds are set at 0.8V and 2.4V, so receiversrespond to TTL level inputs as well as EIA/TIA-232E andV.28 levels.

The receiver inputs withstand an input overvoltage upto ±25V and provide input terminating resistors with

+5V-Powered, Multichannel RS-232Drivers/Receivers

14 ______________________________________________________________________________________

PART SHDN EN EN(R) RECEIVERS

MAX223 __LowHighHigh

XLowHigh

High ImpedanceActiveHigh Impedance

MAX225 __ __High ImpedanceActive

__

MAX235MAX236MAX240

LowLowHigh

__ __LowHighX

High ImpedanceActiveHigh Impedance

Table 2. Three-State Control of Receivers

LowHigh

SHDN

__

Page 143: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 15

nominal 5kΩ values. The receivers implement Type 1interpretation of the fault conditions of V.28 andEIA/TIA-232E.

The receiver input hysteresis is typically 0.5V with aguaranteed minimum of 0.2V. This produces clear out-put transitions with slow-moving input signals, evenwith moderate amounts of noise and ringing. Thereceiver propagation delay is typically 600ns and isindependent of input swing direction.

Low-Power Receive ModeThe low-power receive-mode feature of the MAX223,MAX242, and MAX245–MAX249 puts the IC into shut-down mode but still allows it to receive information. Thisis important for applications where systems are periodi-cally awakened to look for activity. Using low-powerreceive mode, the system can still receive a signal thatwill activate it on command and prepare it for communi-cation at faster data rates. This operation conservessystem power.

Negative Threshold—MAX243The MAX243 is pin compatible with the MAX232A, differ-ing only in that RS-232 cable fault protection is removedon one of the two receiver inputs. This means that controllines such as CTS and RTS can either be driven or leftfloating without interrupting communication. Differentcables are not needed to interface with different pieces ofequipment.

The input threshold of the receiver without cable faultprotection is -0.8V rather than +1.4V. Its output goespositive only if the input is connected to a control linethat is actively driven negative. If not driven, it defaultsto the 0 or “OK to send” state. Normally‚ the MAX243’sother receiver (+1.4V threshold) is used for the data line(TD or RD)‚ while the negative threshold receiver is con-nected to the control line (DTR‚ DTS‚ CTS‚ RTS, etc.).

Other members of the RS-232 family implement theoptional cable fault protection as specified by EIA/TIA-232E specifications. This means a receiver output goeshigh whenever its input is driven negative‚ left floating‚or shorted to ground. The high output tells the serialcommunications IC to stop sending data. To avoid this‚the control lines must either be driven or connectedwith jumpers to an appropriate positive voltage level.

Shutdown—MAX222–MAX242On the MAX222‚ MAX235‚ MAX236‚ MAX240‚ andMAX241‚ all receivers are disabled during shutdown.On the MAX223 and MAX242‚ two receivers continue tooperate in a reduced power mode when the chip is inshutdown. Under these conditions‚ the propagationdelay increases to about 2.5µs for a high-to-low inputtransition. When in shutdown, the receiver acts as aCMOS inverter with no hysteresis. The MAX223 andMAX242 also have a receiver output enable input (ENfor the MAX242 and EN for the MAX223) that allowsreceiver output control independent of SHDN (SHDNfor MAX241). With all other devices‚ SHDN (SHDN forMAX241) also disables the receiver outputs.

The MAX225 provides five transmitters and fivereceivers‚ while the MAX245 provides ten receivers andeight transmitters. Both devices have separate receiverand transmitter-enable controls. The charge pumpsturn off and the devices shut down when a logic high isapplied to the ENT input. In this state, the supply cur-rent drops to less than 25µA and the receivers continueto operate in a low-power receive mode. Driver outputsenter a high-impedance state (three-state mode). Onthe MAX225‚ all five receivers are controlled by theENR input. On the MAX245‚ eight of the receiver out-puts are controlled by the ENR input‚ while the remain-ing two receivers (RA5 and RB5) are always active.RA1–RA4 and RB1–RB4 are put in a three-state modewhen ENR is a logic high.

Receiver and Transmitter Enable Control Inputs

The MAX225 and MAX245–MAX249 feature transmitterand receiver enable controls.

The receivers have three modes of operation: full-speedreceive (normal active)‚ three-state (disabled)‚ and low-power receive (enabled receivers continue to functionat lower data rates). The receiver enable inputs controlthe full-speed receive and three-state modes. Thetransmitters have two modes of operation: full-speedtransmit (normal active) and three-state (disabled). Thetransmitter enable inputs also control the shutdownmode. The device enters shutdown mode when alltransmitters are disabled. Enabled receivers function inthe low-power receive mode when in shutdown.

Page 144: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49 Tables 1a–1d define the control states. The MAX244

has no control pins and is not included in these tables.

The MAX246 has ten receivers and eight drivers withtwo control pins, each controlling one side of thedevice. A logic high at the A-side control input (ENA)causes the four A-side receivers and drivers to go intoa three-state mode. Similarly, the B-side control input(ENB) causes the four B-side drivers and receivers togo into a three-state mode. As in the MAX245, one A-side and one B-side receiver (RA5 and RB5) remainactive at all times. The entire device is put into shut-down mode when both the A and B sides are disabled(ENA = ENB = +5V).

The MAX247 provides nine receivers and eight driverswith four control pins. The ENRA and ENRB receiverenable inputs each control four receiver outputs. TheENTA and ENTB transmitter enable inputs each controlfour drivers. The ninth receiver (RB5) is always active.The device enters shutdown mode with a logic high onboth ENTA and ENTB.

The MAX248 provides eight receivers and eight driverswith four control pins. The ENRA and ENRB receiverenable inputs each control four receiver outputs. TheENTA and ENTB transmitter enable inputs control fourdrivers each. This part does not have an always-activereceiver. The device enters shutdown mode and trans-mitters go into a three-state mode with a logic high onboth ENTA and ENTB.

The MAX249 provides ten receivers and six drivers withfour control pins. The ENRA and ENRB receiver enableinputs each control five receiver outputs. The ENTAand ENTB transmitter enable inputs control three dri-vers each. There is no always-active receiver. Thedevice enters shutdown mode and transmitters go intoa three-state mode with a logic high on both ENTA andENTB. In shutdown mode, active receivers operate in alow-power receive mode at data rates up to20kbits/sec.

__________Applications InformationFigures 5 through 25 show pin configurations and typi-cal operating circuits. In applications that are sensitiveto power-supply noise, VCC should be decoupled toground with a capacitor of the same value as C1 andC2 connected as close as possible to the device.

+5V-Powered, Multichannel RS-232Drivers/Receivers

16 ______________________________________________________________________________________

Page 145: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 17

TOP VIEW

16

15

14

13

12

11

10

9

1

2

3

4

5

6

7

8

VCC

GND

T1OUT

R1INC2+

C1-

V+

C1+

MAX220MAX232

MAX232A R1OUT

T1IN

T2IN

R2OUTR2IN

T2OUT

V-

C2-

DIP/SO

V+

V-

2 +10VC1+C1

C2

1

34

5

11

10

12

9

6

14

7

13

8

T1IN

R1OUT

T2IN

R2OUT

T1OUT

R1IN

T2OUT

R2IN

+5V INPUT

C2+ -10V

C4

RS-232OUTPUTS

RS-232INPUTS

TTL/CMOSINPUTS

TTL/CMOSOUTPUTS

GND15

5k

5k

400k

400k+5V

+5V

+10V TO -10VVOLTAGE INVERTER

+5V TO +10VVOLTAGE DOUBLER

16

C3

C5

CAPACITANCE (µF)DEVICEMAX220MAX232MAX232A

C14.71.00.1

C24.71.00.1

C3101.00.1

C4101.00.1

C54.71.00.1

C2-

C1-

VCC

5k

DIP/SO

18

17

16

15

14

13

12

11

1

2

3

4

5

6

7

8

SHDN

VCC

GND

T1OUTC1-

V+

C1+

(N.C.) EN

R1IN

R1OUT

T1IN

T2INT2OUT

V-

C2-

C2+

109 R2OUTR2IN

MAX222MAX242

20

19

18

17

16

15

14

13

1

2

3

4

5

6

7

8

SHDN

VCC

GND

T1OUTC1-

V+

C1+

(N.C.) EN

N.C.

R1IN

R1OUT

N.C.T2OUT

V-

C2-

C2+

12

11

9

10

T1IN

T2INR2OUT

R2IN

MAX222MAX242

SSOP

( ) ARE FOR MAX222 ONLY.PIN NUMBERS IN TYPICAL OPERATING CIRCUIT ARE FOR DIP/SO PACKAGES ONLY.

V+

V-

3 +10VC1

C2

2

45

6

12

11

13

7

15

8

14

9

T1IN

R1OUT

T2IN

R2OUT

T1OUT

(EXCEPT MAX220)

(EXCEPT MAX220)

R1IN

T2OUT

R2IN

+5V INPUT

C2+ -10V

C4

RS-232OUTPUTS

RS-232INPUTS

TTL/CMOSINPUTS

TTL/CMOSOUTPUTS

GND16

5k

400k

400k+5V

+5V

+10V TO -10VVOLTAGE INVERTER

VCC+5V TO +10V

VOLTAGE DOUBLER

17

C3

C5

1

10

18SHDN

EN(N.C.)

ALL CAPACITORS = 0.1µF

C2-

C1+C1-

TOP VIEW

Figure 5. MAX220/MAX232/MAX232A Pin Configuration and Typical Operating Circuit

Figure 6. MAX222/MAX242 Pin Configurations and Typical Operating Circuit

Page 146: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

18 ______________________________________________________________________________________

13

14

28

27

26

25

24

23

22

21

1

2

3

4

5

6

7

8

VCC

VCC VCC

400k

400k

400k

400k

400k

T1OUT+5V

+5V

0.1

+5V

3

28 27

4

25

24

23

26

5

6

7

22

GNDENRENR

GND

21

+5V

+5V

+5V

T2OUT

T3OUT

T4OUT

5k

5k

5k

5k

5k

1413

21

T5OUT

T5OUT

R1IN

R2IN

R3IN

R4IN

R5IN

T1IN11

12

18

17

16

15

10

9

8

19

20

T2IN

T3IN

T4IN

T5IN

ENT

R2OUT

R3OUT

R4OUT

PINS (ENR, GND, VCC, T5OUT) ARE INTERNALLY CONNECTED.CONNECT EITHER OR BOTH EXTERNALLY. T5OUT IS A SINGLE DRIVER.

R5OUT

R1OUT

VCC

ENT

T3INT2IN

T1IN

ENR

ENR

T4IN

T5IN

R4OUT

R5OUTR3IN

R3OUT

R2OUT

R1OUT

20

19

18

17

9

10

11

12

R5IN

R4IN

T3OUT

T4OUTT2OUT

T1OUT

R1IN

R2IN

SO

MAX225

16

15

T5OUT

MAX225 FUNCTIONAL DESCRIPTION5 RECEIVERS5 TRANSMITTERS2 CONTROL PINS 1 RECEIVER ENABLE (ENR) 1 TRANSMITTER ENABLE (ENT)

T5OUTGND

GND

TOP VIEW

Figure 7. MAX225 Pin Configuration and Typical Operating Circuit

Page 147: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 19

GND

10

27R3OUT

23R4OUT

R3IN

R4IN

5k

5k

5 4R2OUT R2IN

5k

RS-232INPUTS

LOGICOUTPUTS

RS-232OUTPUTS

TTL/CMOSINPUTS

R2

8 9R1OUT R1IN

5k

R1

R3

R4

19 18R5OUT R5IN

5kR5

27 T1IN T1OUT

+5V400k

+5V

6 3T2IN T2OUTT2

400k

20 T3OUT 1T3IN

+5V

T3

400k

C1+

C1-

1.0µF

12VCC

+5V INPUT

11

17

1.0µF

131.0µF

+5V TO +10VVOLTAGE DOUBLER

26

1.0µF

T1

2821 T4IN T4OUT

+5V400k

T4

14

C2+

C2-

15

1.0µF 16+10V TO -10V

VOLTAGE INVERTER

V+

22

EN (EN)24 25

28

27

26

25

24

23

22

21

20

19

18

17

16

15

1

2

3

4

5

6

7

8

9

10

11

12

13

14

T4OUT

R3IN

R3OUT

SHDN (SHDN)

R4IN*

C2+

R4OUT*

T4IN

T3IN

R5OUT*

R5IN*

V-

C2-

C1-

V+

C1+

VCC

GND

R1IN

R1OUT

T1IN

T2IN

R2OUT

R2IN

T2OUT

T1OUT

T3OUT

Wide SO/SSOP

MAX223MAX241

EN (EN)

SHDN(SHDN)

*R4 AND R5 IN MAX223 REMAIN ACTIVE IN SHUTDOWN

NOTE: PIN LABELS IN ( ) ARE FOR MAX241

V-

TOP VIEW

Figure 8. MAX223/MAX241 Pin Configuration and Typical Operating Circuit

Page 148: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

20 ______________________________________________________________________________________

20

19

18

17

16

15

14

13

1

2

3

4

5

6

7

8

T5IN

N.C.

SHDNT2IN

T2OUT

T1OUT

T5OUT

T4IN

T3IN

V-C1+

VCC

GND

T1IN

12

11

9

10

C2-

C2+C1-

V+

DIP/SO

MAX230

V+

V-

9C1+C1-

810

1112

5

4

14

13

2

3

1

20

T3IN

T4IN

T2IN

T5IN

T1OUT

T2OUT

+5V INPUT

C2+C2-

RS-232OUTPUTS

TTL/CMOSINPUTS

GND6

400k+5V

400k+5V

400k+5V

400k+5V

400k+5V

+10V TO -10VVOLTAGE INVERTER

VCC+5V TO +10V

VOLTAGE DOUBLER

7

1.0µF

1.0µF

1.0µF

1.0µF

19

15

16

T3OUT T4OUT

18x

T1IN

T3OUT

T4OUT

T5OUT

17

1.0µF

T2

T3

T4

T5

N.C. SHDN

T1

TOP VIEW

Figure 9. MAX230 Pin Configuration and Typical Operating Circuit

V+

V-

14C1+

C1-

1

2

8

7

3

11

4T2IN

T1IN T1OUT

T2OUT

+5V INPUT

RS-232INPUTS

TTL/CMOSOUTPUTS

GND

12 (14)

5k

5k

+12V TO -12VVOLTAGE CONVERTER

13 (15)

1.0µF

1.0µFC2

1.0µF

400k

+5V

400k

+5V

6

9 10R1IN

R2INR2OUT

R1OUT

5

16

15

14

13

12

11

10

9

1

2

3

4

5

6

7

8

V+

VCC

GND

T1OUTT2OUT

V-

C-

C+

MAX231

R1IN

R1OUT

T1IN

N.C.N.C.

T2IN

R2OUT

R2IN

SO

(12)

RS-232OUTPUTS

TTL/CMOSINPUTS

(11)

(13)(10)

VCC

PIN NUMBERS IN ( ) ARE FOR SO PACKAGE

14

13

12

11

10

9

8

1

2

3

4

5

6

7

V+

VCC

GND

T1OUTT2OUT

V-

C-

C+

MAX231

R1IN

R1OUT

T1INT2IN

R2OUT

R2IN

DIP

+7.5V TO +12V

(16)

T1

T2

R1

R2

TOP VIEW

Figure 10. MAX231 Pin Configurations and Typical Operating Circuit

Page 149: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 21

2

1

5

18T2IN

T1IN T1OUT

T2OUT

+5V INPUT

RS-232OUTPUTS

TTL/CMOSOUTPUTS

GND GND6 9

400k

+5V

400k

+5V

5k

5k

7

20

3 4R1IN

R2INR2OUT

R1OUT

19

RS-232OUTPUTS

TTL/CMOSINPUTS

VCC

( ) ARE FOR SO PACKAGE ONLY.

20

19

18

17

16

15

14

13

1

2

3

4

5

6

7

8

R2IN

T2OUT

V-R1IN

R1OUT

T1IN

C2-

C2+

V+ (C1-)

C1- (C1+)(V+) C1+

VCC

GND

T1OUT

12

11

9

10

V- (C2+)

C2+ (C2-)(V-) CS-

GND

DIP/SO

MAX233MAX233A

T2IN R2OUT

C1+

C1-

V-

V-

V+

C2+

C2-

C2-

C2+

8 (13)

13 (14)

12 (10)

17

14 (8)

11 (12)

15

16

10 (11)

DO NOT MAKECONNECTIONS TO

THESE PINS

INTERNAL -10POWER SUPPLY

INTERNAL +10VPOWER SUPPLY

1.0µFTOP VIEW

Figure 11. MAX233/MAX233A Pin Configuration and Typical Operating Circuit

16

15

14

13

12

11

10

9

1

2

3

4

5

6

7

8

T3OUT

T4OUT

T4IN

T3INT1IN

T2IN

T2OUT

T1OUT

MAX234

V-

C2-

C2+

C1-V+

C1+

VCC

GND

DIP/SO

V+

V-

8C1+

C1-

1.0µF

1.0µF

1.0µF

7

9

10

11

4

3

13

14

12

1

3

16

15

T1IN

T3IN

T2IN

T4IN

T1OUT

T3OUT

T2OUT

T4OUT

+5V INPUT

C2-

C2+

RS-232OUTPUTS

TTL/CMOSINPUTS

GND5

+5V

+5V

+10V TO -10VVOLTAGE INVERTER

VCC+5V TO +10V

VOLTAGE DOUBLER

6

+5V

+5V

400k

400k

400k

400k

1.0µF

1.0µF

T1

T2

T4

T3

TOP VIEW

Figure 12. MAX234 Pin Configuration and Typical Operating Circuit

Page 150: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

22 ______________________________________________________________________________________

1.0µF+5V INPUT

GND

11

6

23

5R2OUT

RS-232INPUTS

TTL/CMOSOUTPUTS

14 13

21

R5OUT

5k

17 18R4OUT

5k

24R3OUT

5k

24

23

22

21

20

19

18

17

1

2

3

4

5

6

7

8

R3IN

R3OUT

T5IN

SHDNT2OUT

T1OUT

T3OUT

T4OUT

EN

T5OUT

R4IN

R4OUTT1IN

T2IN

R2OUT

R2IN

16

15

14

13

9

10

11

12

T4IN

T3IN

R5OUT

R5INVCC

GND

R1IN

R1OUT

DIP

MAX235

5k

9 10R1OUT R1IN

R2IN

R3IN

R4IN

R5IN

5k

7

15

3

4T2IN

T3OUT RS-232OUTPUTS

TTL/CMOSINPUTS

22 19T5IN T5OUT

+5V

16 1T4IN T4OUT

+5V

2T3IN

+5V

+5V

8 T1IN T1OUT

+5V

T2OUT

T1

T1

R2

R3

R4

R5

T2

T3

T5

T4

400k

400k

400k

400k

400k

SHDNEN20

12

VCC

TOP VIEW

Figure 13. MAX235 Pin Configuration and Typical Operating Circuit

Page 151: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 23

GND

8

23R2OUT RS-232INPUTS

TTL/CMOSOUTPUTS

17 16

21

R3OUT

R2IN

R3IN

5k

5k

5 4R1OUT R1IN

5k

RS-232OUTPUTS

TTL/CMOSINPUTS

R1

R2

R3

27 T1IN T1OUT

+5V

T1

400k

6 3T2IN

+5V

T2OUTT2

400k

18 T3OUT 1T3IN

+5V

T3

400k

19 24T4IN T4OUT

+5V

T4

400k

SHDNEN20

11C1+

C1-

1.0µF

10

12

13

14

15

+5V INPUT

C2+

C2-

VCC+5V TO +10V

VOLTAGE DOUBLER

9 1.0µF

1.0µF+10V TO -10VVOLTAGE INVERTER

22

24

23

22

21

20

19

18

17

1

2

3

4

5

6

7

8

T4OUT

R2IN

R2OUT

SHDNR1IN

T2OUT

T1OUT

T3OUT

T4IN

T3IN

R3OUTGND

T1IN

T2IN

R1OUT

16

15

14

13

9

10

11

12

R3IN

V-

C2-

C2+C1-

V+

C1+

VCC

DIP/SO

MAX236 EN

1.0µF

1.0µF

TOP VIEW

V+

V-

Figure 14. MAX236 Pin Configuration and Typical Operating Circuit

Page 152: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

24 ______________________________________________________________________________________

GND

8

23R2OUT RS-232INPUTS

TTL/CMOSOUTPUTS

17 16R3OUT

R2IN

R3IN

5k

5k

5 4R1OUT R1IN

5k

RS-232OUTPUTS

TTL/CMOSINPUTS

R1

R2

R3

27 T1IN T1OUT

+5V

T1

400k

6 3T2IN

+5V

T2OUTT2

400k

18 T3OUT 1T3IN

+5V

T3

400k

21 20T5IN T5OUT

+5V

T5

400k

11C1+

C1-

1.0µF

10

12

13

14

15

+5V INPUT

C2+

C2-

VCC+5V TO +10V

VOLTAGE DOUBLER

9 1.0µF

1.0µF+10V TO -10V

VOLTAGE INVERTER

22

24

23

22

21

20

19

18

17

1

2

3

4

5

6

7

8

T4OUT

R2IN

R2OUT

T5INR1IN

T2OUT

T1OUT

T3OUT

T4IN

T3IN

R3OUTGND

T1IN

T2IN

R1OUT

16

15

14

13

9

10

11

12

R3IN

V-

C2-

C2+C1-

V+

C1+

VCC

DIP/SO

MAX237 T5OUT

1.0µF

1.0µF

19 24T4IN T4OUT

+5V

T4

400k

V+

V-

TOP VIEW

Figure 15. MAX237 Pin Configuration and Typical Operating Circuit

Page 153: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 25

GND

8

3R2OUT

22 23R3OUT

R2IN

R3IN

5k

5k

6 7R1OUT R1IN

5k

RS-232OUTPUTS

TTL/CMOSINPUTS

RS-232INPUTS

TTL/CMOSOUTPUTS

R1

R2

R3

17 16R4OUT R4IN

5k

R4

25 T1IN T1OUT

+5V400k

+5V

18 1T2IN T2OUTT2

400k

19 T3OUT 24T3IN

+5V

T3

400k

11C1+

C1-

1.0µF

10

12

13

1415

+5V INPUT

C2+

C2-

VCC+5V TO +10V

VOLTAGE DOUBLER

9 1.0µF

1.0µF+10V TO -10V

VOLTAGE INVERTER

4

1.0µF

1.0µF

21 20T4IN T4OUT

+5V

T4

400k

T124

23

22

21

20

19

18

17

1

2

3

4

5

6

7

8

T3OUT

R3IN

R3OUT

T4INR2OUT

R2IN

T1OUT

T2OUT

TOP VIEW

T3IN

T2IN

R4OUTGND

R1IN

R1OUT

T1IN

16

15

14

13

9

10

11

12

R4IN

V-

C2-

C2+C1-

V+

C1+

VCC

DIP/SO

MAX238 T4OUT

V+

V-

Figure 16. MAX238 Pin Configuration and Typical Operating Circuit

Page 154: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

26 ______________________________________________________________________________________

GND

3

18R3OUT

12R4OUT

R3IN

R4IN

5k

5k

22 21R2OUT R2IN

5k

RS-232OUTPUTS

TTL/CMOSINPUTS

RS-232INPUTS

TTL/CMOSOUTPUTS

R2

1 2R1OUT R1IN

5k

R1

R3

R4

10 9R5OUT R5IN

5k

R5

1924 T1IN T1OUT

+5V400k

+5V

23 20T2IN T2OUTT2

400k

16 T3OUT 13T3IN

+5V

T3

400k

C1+

C1-

1.0µF

6 VCC 8

+5V INPUT

4 5

1.0µF+10V TO -10V

VOLTAGE INVERTER

17

1.0µF

T1

24

23

22

21

20

19

18

17

1

2

3

4

5

6

7

8

T1IN

T2IN

R2OUT

R2INVCC

GND

R1IN

R1OUT

T1OUT

R3IN

R3OUTV-

C-

C+

V+

16

15

14

13

9

10

11

12

T3IN

N.C.

EN

T3OUTR4IN

R4OUT

R5OUT

R5IN

DIP/SO

MAX239 T2OUT

7.5V TO 13.2VINPUT

7

V+

11

EN14 15N.C.

V-

TOP VIEW

Figure 17. MAX239 Pin Configuration and Typical Operating Circuit

Page 155: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 27

GND

18

4R3OUT

40R4OUT

R3IN

R4IN

5k

5k

13 10R2OUT R2IN

5k

RS-232INPUTS

TTL/CMOSOUTPUTS

RS-232OUTPUTS

TTL/CMOSINPUTS

R2

16 17R1OUT R1IN

5kR1

R3

R4

36 35R5OUT R5IN

5k

R5

715 T1IN T1OUT

+5V 400k

+5V

14 8T2IN T2OUTT2

400k

37 T3OUT 6T3IN

+5V

T3

400k

C1+

C1-

1.0µF

25VCC

+5V INPUT

19

30

1.0µF

261.0µF

+5V TO +10VVOLTAGE DOUBLER

3

1.0µF

T1

+5V

2 41T5IN T5OUTT5

400k

538 T4IN T4OUT

+5V 400k

T4

27

C2+

C2-

28

1.0µF 29+5V TO -10V

VOLTAGE INVERTER

V+

39

EN42 43

Plastic FP

MAX240

SHDNENT5OUTR4INR4OUT

R5OUTR5INN.C.

N.C.

T3IN

T4IN

R2OUTT2INT1IN

R1OUTR1IN

N.C.N.C.N.C.

N.C.

VCC

GND

R2IN

N.C.

T4OU

T

T2OU

TT1

OUT

T3OU

T

N.C.

R3IN

R3OU

T

N.C.

T5IN

N.C.

C1+ C2V+ C1-

C2+

N.C. V-

N.C.

N.C.

N.C.

3332313029282726252423

3435363738394041424344

1234567891011

2221201918171615141312

SHDN

TOP VIEW

V-

Figure 18. MAX240 Pin Configuration and Typical Operating Circuit

Page 156: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

28 ______________________________________________________________________________________

V+

V-

2 +10VC1+

C1-

1

3

4

5

11

10

12

9

6

14

7

13

8

T1IN

R1OUT

T2IN

R2OUT

T1OUT

R1IN

T2OUT

R2IN

+5V INPUT

C2+

C2--10V

RS-232OUTPUTS

RS-232INPUTS

TTL/CMOSINPUTS

TTL/CMOSOUTPUTS

GND

15

5k

5k

400k

400k

+5V

+5V

+10V TO -10VVOLTAGE INVERTER

+5V TO +10VVOLTAGE DOUBLER

16

16

15

14

13

12

11

10

9

1

2

3

4

5

6

7

8

C1+ VCC

GND

T1OUT

R1IN

R1OUT

T1IN

T2IN

R2OUT

MAX243

DIP/SO

V+

C1-

V-

C2+

C2-

T2OUT

R2IN

0.1µF

0.1µF

0.1µF

0.1µFALL CAPACITORS = 0.1µF

0.1µF

RECEIVER INPUT≤ -3 VOPEN≥ +3V

R1 OUTPUTHIGHHIGHLOW

R2 OUTPUTHIGHLOWLOW

TOP VIEW

VCC

Figure 19. MAX243 Pin Configuration and Typical Operating Circuit

Page 157: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 29

400k

+10V TO -10V VOLTAGE INVERTER

+5V TO +10V VOLTAGE DOUBLERVCC

400k

400k

GND

+5V +5V

+5V +5V

+5V

25

2423

2120

2

1µF

1µF

1µF 1µF

1µF

16

3

17

4

18

5k

5k

5k

5k

5k

5k

5k

5k

5k

5k

C2-C2+

C1-C1+

TA2OUT

TA2IN

TA3OUT

TA3IN

TA4OUT

TA4IN

9 RA1IN

10 RA1OUT

8 RA2IN

11 RA2OUT

7 RA3IN

12 RA3OUT

6 RA4IN

13 RA4OUT

5 RA5IN

14

19

RA5OUT

26

22

43

29

42

28

41

27

36

35

37

34

38

33

39

32

40

31

V-

V+

TB2OUT

TB2IN

400k

2

15

TA1OUT

TA1IN

44

30

TB1OUT

TB1IN

TB3OUT

TB3IN

TB4OUT

TB4IN

RB1IN

RB1OUT

RB2IN

RB2OUT

RB3IN

RB3OUT

RB4IN

RB4OUT

RB5IN

RB5OUT

MAX249 FUNCTIONAL DESCRIPTION10 RECEIVERS 5 A-SIDE RECEIVER 5 B-SIDE RECEIVER8 TRANSMITTERS 4 A-SIDE TRANSMITTERS 4 B-SIDE TRANSMITTERSNO CONTROL PINS

441234 404142435

21 24 2625 27 2822 2319 20

8

9

10

11

12

13

14

15

16

17 29

30

31

32

33

34

35

36

37

38

TA3IN

V CC

R A5IN

MAX244

PLCC

TOP VIEW

T A4O

UT

T A3O

UT

T A2O

UT

T A1O

UT

T B1O

UT

T B2O

UT

T B3O

UT

TB4O

UT

R B5IN

GND V+C1+

C2+

C1- V-C2-

T B3IN

T B4IN

RB3IN

RB2IN

RB1IN

RB1OUT

RB2OUT

RB3OUT

RB4OUT

RB5OUT

TB1IN

TB2IN

TA2IN

TA1IN

RA5OUT

RA4OUT

RA3OUT

RA2OUT

RA1OUT

RA1IN

RA2IN

7 39 RB4INRA3IN

6

18

R A4IN

T A4IN

+5V +5V

+5V +5V

Figure 20. MAX244 Pin Configuration and Typical Operating Circuit

Page 158: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

30 ______________________________________________________________________________________

400k

VCC

400k

400k

GND

+5V +5V

+5V +5V

+5V

40

17

1µF

3

18

4

19

5

5k

5k

5k

5k

5k

5k

5k

5k

5k

5k

TA2OUT

TA2IN

TA3OUT

TA3IN

TA4OUT

TA4IN

1

11 RA1IN

10 RA1OUT

12 RA2IN

9 RA2OUT

13 RA3IN

8 RA3OUT

14 RA4IN

7 RA4OUT

15 RA5IN

6

20

RA5OUT

23

37

22

36

21

35

29

30

28

31

27

32

26

33

25

34

TB2OUT

TB2IN

TB3OUT

TB3IN

TB4OUT

TB4IN

RB1IN

RB1OUT

RB2IN

RB2OUT

RB3IN

RB3OUT

RB4IN

RB4OUT

RB5IN

RB5OUT

+5V +5V

400k

16

2

TA1OUT

TA1IN

24

38

TB1OUT

TB1IN

+5V +5V40 VCC

ENT

TB1IN

TB2IN

TB3IN

TB4IN

RB5OUT

RB4OUT

RB3OUT

RB2OUT

RB1OUT

RB1IN

RB2IN

RB3IN

RB4IN

RB5IN

TB1OUT

TB2OUT

TB3OUT

TB4OUT

39

38

37

36

35

34

33

32

31

1

2

3

4

5

6

7

8

9

10

ENR

TA1IN

TA2IN

TA3IN

TA4IN

RA5OUT

RA4OUT

RA3OUT

RA2OUT

RA1OUT

RA1IN

RA2IN

RA3IN

RA4IN

RA5IN

TA1OUT

TA2OUT

TA3OUT

TA4OUT

GND

TOP VIEW

MAX245

30

29

28

27

26

25

24

23

22

21

11

12

13

14

15

16

17

18

19

DIP

20

MAX245 FUNCTIONAL DESCRIPTION10 RECEIVERS 5 A-SIDE RECEIVERS (RA5 ALWAYS ACTIVE) 5 B-SIDE RECEIVERS (RB5 ALWAYS ACTIVE)8 TRANSMITTTERS 4 A-SIDE TRANSMITTERS2 CONTROL PINS 1 RECEIVER ENABLE (ENR) 1 TRANSMITTER ENABLE (ENT)

39ENR ENT

Figure 21. MAX245 Pin Configuration and Typical Operating Circuit

Page 159: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 31

400k

VCC

400k

GND

+5V

+5V

+5V

+5V

+5V

40

16

1µF

2

18

4

TA1OUT

TA1IN

TA3OUT

TA3IN

20

24

38

22

36

1 39

TB1OUT

TB1IN

TB3OUT

TB3IN

400k

+5V17

3

TA2OUT

TA2IN

+5V23

37

TB2OUT

TB2IN

400k

+5V19

5

TA4OUT

TA4IN

+5V21

35

TB4OUT

TB4IN

5k

5k

5k

5k

5k

5k

5k

5k

5k

5k

11 RA1IN

10 RA1OUT

12 RA2IN

9 RA2OUT

13 RA3IN

8 RA3OUT

14 RA4IN

7 RA4OUT

15 RA5IN

6 RA5OUT

29

30

28

31

27

32

26

33

25

34

RB1IN

RB1OUT

RB2IN

RB2OUT

RB3IN

RB3OUT

RB4IN

RB4OUT

RB5IN

RB5OUT

40 VCC

ENB

TB1IN

TB2IN

TB3IN

TB4IN

RB5OUT

RB4OUT

RB3OUT

RB2OUT

RB1OUT

RB1IN

RB2IN

RB3IN

RB4IN

RB5IN

TB1OUT

TB2OUT

TB3OUT

TB4OUT

39

38

37

36

35

34

33

32

31

1

2

3

4

5

6

7

8

9

10

ENA

TA1IN

TA2IN

TA3IN

TA4IN

RA5OUT

RA4OUT

RA3OUT

RA2OUT

RA1OUT

RA1IN

RA2IN

RA3IN

RA4IN

RA5IN

TA1OUT

TA2OUT

TA3OUT

TA4OUT

GND

TOP VIEW

MAX246

30

29

28

27

26

25

24

23

22

21

11

12

13

14

15

16

17

18

19

DIP

20

MAX246 FUNCTIONAL DESCRIPTION10 RECEIVERS 5 A-SIDE RECEIVERS (RA5 ALWAYS ACTIVE) 5 B-SIDE RECEIVERS (RB5 ALWAYS ACTIVE)8 TRANSMITTERS 4 A-SIDE TRANSMITTERS 4 B-SIDE TRANSMITTERS2 CONTROL PINS ENABLE A-SIDE (ENA) ENABLE B-SIDE (ENB)

ENA ENB

Figure 22. MAX246 Pin Configuration and Typical Operating Circuit

Page 160: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

32 ______________________________________________________________________________________

400k

VCC

400k

GND

+5V

+5V

+5V

+5V

+5V

1

40

16

1µF

2

18

4

5k

5k

5k

5k

5k

5k

5k

5k

ENTA

TA1OUT

TA1IN

TA3OUT

TA3IN

6 RB5OUT

12 RA1IN

10 RA1OUT

13 RA2IN

9 RA2OUT

14 RA3IN

8 RA3OUT

15 RA4IN

7

20

RA4OUT

11

39

24

38

22

36

29

31

28

32

27

33

26

34

30ENRA

ENTB

TB1OUT

TB1IN

TB3OUT

TB3IN

RB1IN

5k

25RB5IN

RB1OUT

RB2IN

RB2OUT

RB3IN

RB3OUT

RB4IN

RB4OUT

ENRB

400k

+5V17

3

TA2OUT

TA2IN

+5V23

37

TB2OUT

TB2IN

400k

+5V19

5

TA4OUT

TA4IN

+5V21

35

TB4OUT

TB4IN

40 VCC

ENTB

TB1IN

TB2IN

TB3IN

TB4IN

RB4OUT

RB3OUT

RB2OUT

RB1OUT

RB1IN

RB2IN

RB3IN

RB4IN

RB5IN

TB1OUT

TB2OUT

TB3OUT

TB4OUT

39

38

37

36

35

34

33

32

31

1

2

3

4

5

6

7

8

9

10

ENTA

TA1IN

TA2IN

TA3IN

TA4IN

RB5OUT

RA4OUT

RA3OUT

RA2OUT

RA1OUT

RA1IN

RA2IN

RA3IN

RA4IN

TA1OUT

TA2OUT

TA3OUT

TA4OUT

GND

TOP VIEW

MAX247

30

29

28

27

26

25

24

23

22

21

11

12

13

14

15

16

17

18

19

DIP

20

ENRA ENRB

MAX247 FUNCTIONAL DESCRIPTION9 RECEIVERS 4 A-SIDE RECEIVERS 5 B-SIDE RECEIVERS (RB5 ALWAYS ACTIVE)8 TRANSMITTERS 4 A-SIDE TRANSMITTERS 4 B-SIDE TRANSMITTERS4 CONTROL PINS ENABLE RECEIVER A-SIDE (ENRA) ENABLE RECEIVER B-SIDE (ENRB) ENABLE RECEIVER A-SIDE (ENTA) ENABLE RECEIVERr B-SIDE (ENTB)

Figure 23. MAX247 Pin Configuration and Typical Operating Circuit

Page 161: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 33

400k

+10V TO -10V VOLTAGE INVERTER

+5V TO +10V VOLTAGE DOUBLERVCC

400k

GND

+5V

+5V

+5V

+5V

+5V

18

25

2423

2120

1

1µF

1µF

1µF1µF

1µF

14

3

16

5k

5k

5k

5k

5k

5k

5k

5k

ENTA

C2-C2+

C1-C1+

TA1OUT

TA1IN

TA3OUT

TA3IN

8 RA1IN

10 RA1OUT

7 RA2IN

11 RA2OUT

6 RA3IN

12 RA3OUT

5 RA4IN

13

19

RA4OUT

9

27

26

22

44

31

42

29

37

35

38

34

39

33

40

32

36ENRA

ENTB

V-

V+

TB1OUT

TB1IN

TB3OUT

TB3IN

RB1IN

RB1OUT

RB2IN

RB2OUT

RB3IN

RB3OUT

RB4IN

RB4OUT

ENRB

400k

+5V2

15

TA2OUT

TA2IN

+5V43

30

TB2OUT

TB2IN

400k

+5V4

17

TA4OUT

TA4IN

+5V41

28

TB4OUT

TB4IN

441234 404142435

21 24 2625 27 2822 2319 20

8

9

10

11

12

13

14

15

16

17 29

30

31

32

33

34

35

36

37

38

TA4IN

V CC

R A4IN

MAX248

PLCC

TOP VIEW

T A4O

UT

T A3O

UT

T A2O

UT

T A1O

UT

T B1O

UT

T B2O

UT

T B3O

UT

T A4O

UT

R B4IN

GND V+C1+

C2+

C1- V-C2-

T B4IN

ENTB

RB2IN

RB1IN

RB1OUT

RB2OUT

RB3OUT

RB4OUT

TB1IN

TB2IN

TB3IN

TA3IN

TA2IN

TA1IN

RA4OUT

RA3OUT

RA2OUT

RA1OUT

ENRA

RA1IN

7 39 RB3INRA2IN

6

18

R A3IN

ENRB

ENTA

MAX248 FUNCTIONAL DESCRIPTION8 RECEIVERS 4 A-SIDE RECEIVERS 4 B-SIDE RECEIVERS8 TRANSMITTERS 4 A-SIDE TRANSMITTERS 4 B-SIDE TRANSMITTERS4 CONTROL PINS ENABLE RECEIVER A-SIDE (ENRA) ENABLE RECEIVER B-SIDE (ENRB) ENABLE RECEIVER A-SIDE (ENTA) ENABLE RECEIVER B-SIDE (ENTB)

Figure 24. MAX248 Pin Configuration and Typical Operating Circuit

Page 162: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

34 ______________________________________________________________________________________

400k

+10V TO -10V VOLTAGE INVERTER

+5V TO +10V VOLTAGE DOUBLERVCC

400k

400k

GND

+5V

+5V

+5V

+5V

+5V

+5V

+5V

18

25

2423

2120

1

1µF

1µF

1µF1µF

15

2

16

3

17

5k

5k

5k

5k

5k

5k

5k

5k

5k

5k

ENTA

C2-C2+

C1-C1+

TA1OUT

TA1IN

TA2OUT

TA2IN

TA3OUT

TA3IN

8 RA1IN

10 RA1OUT

7 RA2IN

11 RA2OUT

6 RA3IN

12 RA3OUT

5 RA4IN

13 RA4OUT

4 RA5IN

14

19

RA5OUT

9

27

26

22

44

30

43

29

42

28

37

35

38

34

39

33

40

32

41

31

36ENRA

ENTB

V-

V+

TB1OUT

TB1IN

TB2OUT

TB2IN

TB3OUT

TB3IN

RB1IN

RB1OUT

RB2IN

RB2OUT

RB3IN

RB3OUT

RB4IN

RB4OUT

RB5IN

RB5OUT

ENRB

441234 404142435

21 24 2625 27 2822 2319 20

8

9

10

11

12

13

14

15

16

17 29

30

31

32

33

34

35

36

37

38

V CC

R A4IN

R A5IN

MAX249

PLCC

TOP VIEW

T A3O

UT

T A2O

UT

T A1O

UT

T B1O

UT

T B2O

UT

T B3O

UT

R B4IN

R B5IN

GND V+C1+

C2+

C1- V-C2-

T B3IN

ENTB

RB2IN

RB1IN

RB1OUT

MAX249 FUNCTIONAL DESCRIPTION10 RECEIVERS 5 A-SIDE RECEIVERS 5 B-SIDE RECEIVERS6 TRANSMITTERS 3 A-SIDE TRANSMITTERS 3 B-SIDE TRANSMITTERS4 CONTROL PINS ENABLE RECEIVER A-SIDE (ENRA) ENABLE RECEIVER B-SIDE (ENRB) ENABLE RECEIVER A-SIDE (ENTA) ENABLE RECEIVER B-SIDE (ENTB)

RB2OUT

RB3OUT

RB4OUT

RB5OUT

TB1IN

TB2INTA3IN

TA2IN

TA1IN

RA4OUT

RA5OUT

RA3OUT

RA2OUT

RA1OUT

ENRA

RA1IN

7 39 RB3INRA2IN

6

18

R A3IN

ENRB

ENTA

1µF

Figure 25. MAX249 Pin Configuration and Typical Operating Circuit

Page 163: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers

______________________________________________________________________________________ 35

___________________________________________Ordering Information (continued)

PART

MAX222CPN 0°C to +70°C

TEMP. RANGE PIN-PACKAGE

18 Plastic DIP

MAX222CWN 0°C to +70°C 18 Wide SO

MAX222C/D 0°C to +70°C Dice*

MAX222EPN -40°C to +85°C 18 Plastic DIP

MAX222EWN -40°C to +85°C 18 Wide SO

MAX222EJN -40°C to +85°C 18 CERDIP

MAX222MJN -55°C to +125°C 18 CERDIP

MAX223CAI 0°C to +70°C 28 SSOP

MAX223CWI 0°C to +70°C 28 Wide SO

MAX223C/D 0°C to +70°C Dice*

MAX223EAI -40°C to +85°C 28 SSOP

MAX223EWI -40°C to +85°C 28 Wide SO

MAX225CWI 0°C to +70°C 28 Wide SO

MAX225EWI -40°C to +85°C 28 Wide SO

MAX230CPP 0°C to +70°C 20 Plastic DIP

MAX230CWP 0°C to +70°C 20 Wide SO

MAX230C/D 0°C to +70°C Dice*

MAX230EPP -40°C to +85°C 20 Plastic DIP

MAX230EWP -40°C to +85°C 20 Wide SO

MAX230EJP -40°C to +85°C 20 CERDIP

MAX230MJP -55°C to +125°C 20 CERDIP

MAX231CPD 0°C to +70°C 14 Plastic DIP

MAX231CWE 0°C to +70°C 16 Wide SO

MAX231CJD 0°C to +70°C 14 CERDIP

MAX231C/D 0°C to +70°C Dice*

MAX231EPD -40°C to +85°C 14 Plastic DIP

MAX231EWE -40°C to +85°C 16 Wide SO

MAX231EJD -40°C to +85°C 14 CERDIP

MAX231MJD -55°C to +125°C 14 CERDIP

MAX232CPE 0°C to +70°C 16 Plastic DIP

MAX232CSE 0°C to +70°C 16 Narrow SO

MAX232CWE 0°C to +70°C 16 Wide SO

MAX232C/D 0°C to +70°C Dice*

MAX232EPE -40°C to +85°C 16 Plastic DIP

MAX232ESE -40°C to +85°C 16 Narrow SO

MAX232EWE -40°C to +85°C 16 Wide SO

MAX232EJE -40°C to +85°C 16 CERDIP

MAX232MJE -55°C to +125°C 16 CERDIP

MAX232MLP -55°C to +125°C 20 LCC

MAX232ACPE 0°C to +70°C 16 Plastic DIP

MAX232ACSE 0°C to +70°C 16 Narrow SO

MAX232ACWE 0°C to +70°C 16 Wide SO

MAX232AC/D

MAX232AEPE -40°C to +85°C 16 Plastic DIP

MAX232AESE

0°C to +70°C Dice*

-40°C to +85°C 16 Narrow SO

MAX232AEWE -40°C to +85°C 16 Wide SO

MAX232AEJE -40°C to +85°C 16 CERDIP

MAX232AMJE -55°C to +125°C 16 CERDIP

MAX232AMLP -55°C to +125°C 20 LCC

MAX233CPP 0°C to +70°C 20 Plastic DIP

MAX233EPP -40°C to +85°C 20 Plastic DIP

MAX233ACPP 0°C to +70°C 20 Plastic DIP

MAX233ACWP 0°C to +70°C 20 Wide SO

MAX233AEPP -40°C to +85°C 20 Plastic DIP

MAX233AEWP -40°C to +85°C 20 Wide SO

MAX234CPE 0°C to +70°C 16 Plastic DIP

MAX234CWE 0°C to +70°C 16 Wide SO

MAX234C/D 0°C to +70°C Dice*

MAX234EPE -40°C to +85°C 16 Plastic DIP

MAX234EWE -40°C to +85°C 16 Wide SO

MAX234EJE -40°C to +85°C 16 CERDIP

MAX234MJE -55°C to +125°C 16 CERDIP

MAX235CPG 0°C to +70°C 24 Wide Plastic DIP

MAX235EPG -40°C to +85°C 24 Wide Plastic DIP

MAX235EDG -40°C to +85°C 24 Ceramic SB

MAX235MDG -55°C to +125°C 24 Ceramic SB

MAX236CNG 0°C to +70°C 24 Narrow Plastic DIP

MAX236CWG 0°C to +70°C 24 Wide SO

MAX236C/D 0°C to +70°C Dice*

MAX236ENG -40°C to +85°C 24 Narrow Plastic DIP

MAX236EWG -40°C to +85°C 24 Wide SO

MAX236ERG -40°C to +85°C 24 Narrow CERDIP

MAX236MRG -55°C to +125°C 24 Narrow CERDIP

MAX237CNG 0°C to +70°C 24 Narrow Plastic DIP

MAX237CWG 0°C to +70°C 24 Wide SO

MAX237C/D 0°C to +70°C Dice*

MAX237ENG -40°C to +85°C 24 Narrow Plastic DIP

MAX237EWG -40°C to +85°C 24 Wide SO

MAX237ERG -40°C to +85°C 24 Narrow CERDIP

MAX237MRG -55°C to +125°C 24 Narrow CERDIP

MAX238CNG 0°C to +70°C 24 Narrow Plastic DIP

MAX238CWG 0°C to +70°C 24 Wide SO

MAX238C/D 0°C to +70°C Dice*

MAX238ENG -40°C to +85°C 24 Narrow Plastic DIP

* Contact factory for dice specifications.

Page 164: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

MA

X2

20

–MA

X2

49

+5V-Powered, Multichannel RS-232Drivers/Receivers___________________________________________Ordering Information (continued)

* Contact factory for dice specifications.

18 CERDIP-55°C to +125°CMAX242MJN

18 CERDIP-40°C to +85°CMAX242EJN

18 Wide SO-40°C to +85°CMAX242EWN

18 Plastic DIP-40°C to +85°CMAX242EPN

Dice*0°C to +70°CMAX242C/D

18 Wide SO0°C to +70°CMAX242CWN

18 Plastic DIP0°C to +70°CMAX242CPN

20 SSOP0°C to +70°CMAX242CAP

28 Wide SO-40°C to +85°CMAX241EWI

28 SSOP-40°C to +85°CMAX241EAI

Dice*0°C to +70°CMAX241C/D

28 Wide SO0°C to +70°CMAX241CWI

28 SSOP0°C to +70°CMAX241CAI

Dice*0°C to +70°CMAX240C/D

44 Plastic FP0°C to +70°CMAX240CMH

24 Narrow CERDIP-55°C to +125°CMAX239MRG

24 Narrow CERDIP-40°C to +85°CMAX239ERG

24 Wide SO-40°C to +85°CMAX239EWG

24 Narrow Plastic DIP-40°C to +85°CMAX239ENG

Dice*0°C to +70°CMAX239C/D

24 Wide SO0°C to +70°CMAX239CWG

24 Narrow Plastic DIP0°C to +70°CMAX239CNG

24 Narrow CERDIP-55°C to +125°C

24 Wide SO

PIN-PACKAGETEMP. RANGE

-40°C to +85°C

MAX238MRG

24 Narrow CERDIP-40°C to +85°CMAX238ERG

MAX238EWG

PART

44 PLCC-40°C to +85°CMAX249EQH

44 PLCC0°C to +70°CMAX249CQH

44 PLCC-40°C to +85°CMAX248EQH

Dice*0°C to +70°CMAX248C/D

44 PLCC0°C to +70°CMAX248CQH

40 Plastic DIP-40°C to +85°CMAX247EPL

Dice*0°C to +70°CMAX247C/D

40 Plastic DIP0°C to +70°CMAX247CPL

40 Plastic DIP-40°C to +85°CMAX246EPL

Dice*0°C to +70°CMAX246C/D

40 Plastic DIP0°C to +70°CMAX246CPL

40 Plastic DIP-40°C to +85°CMAX245EPL

Dice*0°C to +70°CMAX245C/D

40 Plastic DIP0°C to +70°CMAX245CPL

44 PLCC-40°C to +85°CMAX244EQH

Dice*0°C to +70°CMAX244C/D

44 PLCC0°C to +70°CMAX244CQH

16 CERDIP-55°C to +125°CMAX243MJE

16 CERDIP-40°C to +85°CMAX243EJE

16 Wide SO-40°C to +85°CMAX243EWE

16 Narrow SO-40°C to +85°CMAX243ESE

16 Plastic DIP-40°C to +85°CMAX243EPE

Dice*0°C to +70°CMAX243C/D

16 Wide SO0°C to +70°C

16 Plastic DIP0°C to +70°C

MAX243CWE

16 Narrow SO0°C to +70°CMAX243CSE

MAX243CPE

Maxim cannot assume responsibility for use of any circuitry other than circuitry entirely embodied in a Maxim product. No circuit patent licenses areimplied. Maxim reserves the right to change the circuitry and specifications without notice at any time.

36 __________________Maxim Integrated Products, 120 San Gabriel Drive, Sunnyvale, CA 94086 (408) 737-7600

© 2001 Maxim Integrated Products Printed USA is a registered trademark of Maxim Integrated Products.

Page 165: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Anexo II - Programa do microcontrolador relativo à aplicação

industrial

Page 166: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA
Page 167: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

1 ;************************************************************************************2 ; NOME: PID_LPT.asm *3 ; DATA: 01-08-2008 *4 ; VERSÃO: 1.0 *5 ; AUTOR: Victor Silva *6 ;************************************************************************************7 ; FICHEIRO NECESSÁRIO: p16f876.inc *8 ;************************************************************************************9 ; DESCRIÇÃO: Este programa recebe do PC através da porta paralela a velocidade *10 ; desejada para o motor e implementa o controlo PID da velocidade. *11 ; Disponibiliza ao PC o valor da velocidade de rotação actual através da porta *12 ; paralela. *13 ; - O cristal de quartzo utilizado é de 20MHz. *14 ; - O Watchdog Timer está configurado para reiniciar ao fim de 18ms. *15 ; - A frequência do PWM é de 50KHz. *16 ; - Controlo PID da velocidade do motor. *17 ;************************************************************************************18 ; \\|// *19 ; |º|º| *20 ; \-/ *21 ; /|.|\ Inicio *22 ;************************************************************************************23 #include <p16f876.inc> ; Definições específicas do uC.2425 __CONFIG _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_ON &

_HS_OSC 26 errorlevel -302 ; Para eliminar as mensagens relacionadas com o bank 0.2728 ;************************************************************************************29 ; CONSTANTES: *30 ;************************************************************************************31 ; >> Atenção, são endereços e não valores.(movlw e não movfw) <<32 OPTIONVAL EQU B'00000000' ; Valor para o registo OPTION_REG.33 INTCONVAL EQU B'11000000' ; Valor para o registo INTCON.34 PIE1VAL EQU B'00000010' ; Valor para o registo PIE1.35 PIE2VAL EQU B'00000000' ; Valor para o registo PIE2.36 ADCON1VAL EQU B'00000110' ; Valor para o registo ADCON1 (Analógico/Digital).37 SSPCONVAL EQU B'00000000' ; Valor para o registo SSPCON (SPI/I2C).38 CCP1CONVAL EQU B'00001100' ; Valor para o registo CCP1CON (PWM).3940 ; Constantes para a frequência do PWM e o tempo de amostragem41 ; -----------------------------------------------------------42 PR2VAL EQU D'99' ; O Timer 2 conta até (PR2VAL+1)×1×1×0,2µs=20us => f=50KHz43 COMPTVAL1_tmr2 EQU D'99' ; Número de passagem no tmr2:44 COMPTVAL2_tmr2 EQU D'1' ; Número de

passagem=(COMPTVAL1_tmr2+COMPTVAL2_tmr2)×20us=2000us45 ; V=12V=> Tmin(encoder)=40us=> 100*40us=4000us46 ; V=24V=> Tmin(encoder)=20us=> 100*20us=2000us4748 ; Constantes para o controlo PID49 ; ------------------------------50 Kp EQU D'3' ; Constante proporcional.51 Ki EQU D'1' ; Constante integral.52 Kd EQU D'0' ; Constante derivativa.5354 ; DIRECÇÃO DOS PORTOS I/O55 ; -----------------------56 DIRPORTA EQU B'00001111' ; Direcção do PORTA (1=input/0=output)57 DIRPORTB EQU B'00000000' ; Direcção do PORTB (1=input/0=output)58 DIRPORTC EQU B'11111001' ; Direcção do PORTC (1=input/0=output)5960 ;************************************************************************************61 ; DEFINIÇÕES: *62 ;************************************************************************************63 #DEFINE LED_Vida PORTA,5 ; LED ligado ao RA5.64 #DEFINE Sentido PORTC,1 ; Linha Sentido.65 #DEFINE PWM PORTC,2 ; Linha PWM.66 #DEFINE Oscilator_value .567 ; Oscilator_value=5 para um oscilador de 20 MHz68 ; Oscilator_value=4 para um oscilador de 16 MHz69 ; Oscilator_value=3 para um oscilador de 12 MHz70 ; Oscilator_value=2 para um oscilador de 8 MHz71 ; Oscilator_value=1 para um oscilador de 4 MHz7273 ;************************************************************************************74 ; MACROS: *75 ;************************************************************************************76 BANK0 macro ; Aceder ao banco 077 bcf STATUS,RP078 bcf STATUS,RP1

1

Page 168: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

79 endm8081 BANK1 macro ; Aceder ao banco 1 82 bsf STATUS,RP083 bcf STATUS,RP184 endm8586 BANK2 macro ; Aceder ao banco 287 bcf STATUS,RP088 bsf STATUS,RP189 endm9091 BANK3 macro ; Aceder ao banco 392 bsf STATUS,RP093 bsf STATUS,RP194 endm9596 SHIFT macro ; Divisão por 297 bcf STATUS,C98 rrf L_byte,f99 bcf STATUS,C100 rrf H_byte,f101 btfsc STATUS,C102 bsf L_byte,7103 endm104105 ;************************************************************************************106 ; DECLARAÇÃO DE VARIÁVEIS DO BANCO 0 *107 ;************************************************************************************108 ; Zona de 80 bytes109 ; ----------------110 CBLOCK 0x20 ; Inicio da zona de variáveis (0x20 à 0x6Fh).111112 ; >> Conj de variáveis necessárias à rotina msDelay <<113 MsDelayCounter : 2 ; Var. para a rotina de tempo msDelay.114 Time_value : 1 ; Var. para a rotina de tempo msDelay.115 Counter : 1 ; Var. para contabilizar as passagens na rotina de tempo

msDelay.116117 ; >> Conj de variáveis com os dados<<118 MoR_value : 1 ; Var. com o valor a escrever no registo Mode (Speed).119 Old_MoR_value : 1 ; Var. com o valor antigo do registo Mode (Speed).120 SpR_value : 1 ; Var. com o valor a escrever no registo Speed.121 122 Status_flag : 1 ; Conjunto de flags de estado: 123 ; 2 - Flag de chegada de dados (Sense+Speed).124 ; 4 - Flag de leitura da velocidade do encoder.125 ; 5 - Flag de tempo de amostragem.126 ; 6 - Flag do factor tempo de amostragem.127 ; >> Conj de variáveis necessárias para implementar o controlo PID <<128 Velocidade : 1 ; Var. com o valor da velocidade.129 Vel_actual : 1 ; Var. com o valor da velocidade actual do encoder.130 Vel_ref : 1 ; Var. com o valor da velocidade de referência.131 Contador1_tmr2 : 1 ; Var. para controlar as passagens pela interrupção do Timer2.132 Contador2_tmr2 : 1 ; Var. para controlar as passagens pela interrupção do Timer2.133 erro_actual : 1 ; Var. com o valor do erro do sistema |Vref-Vreal|.134 erro_antigo : 1 ; Var. com o valor do erro anterior do sistema.135 erro_acum : 1 ; Var. com o valor do erro acumulado.136 de_dt : 1 ; Var. com o valor de/dt.137 SUMLO : 1 ; Var. para guardar o valor do somatório do sistema. 138 SUMHI : 1 ; Var. para guardar o valor do somatório do sistema. 139 PID_flag : 1 ; Conjunto de flags para o controlo PID:140 ; 0 - Flag de sinal do valor erro_actual141 ; 1 - Flag de sinal do valor erro_antigo142 ; 2 - Flag de sinal do valor do de/dt143 ; 3 - Flag de sinal do valor erro_acum144145 ; >> Conj de variáveis necessárias para as operações aritméticas <<146 mulcnd : 1 ; Var. com o valor do multiplicando de 8 bits.147 mulplr : 1 ; Var. com o valor do multiplicador de 8 bits.148 H_byte : 1 ; Var. para guardar o MSB do resultado da multiplicação.149 L_byte : 1 ; Var. para guardar o LSB do resultado da multiplicação.150 count : 1 ; Var. para contabilizar as passagens na multiplicação.151 ACCaLO : 1 ; Var. com o LSB de A para a adição. 152 ACCaHI : 1 ; Var. com o MSB de A para a adição.153 ACCbLO : 1 ; Var. com o LSB de B para a adição.154 ACCbHI : 1 ; Var. com o MSB de B para a adição.155 ENDC ; Fim da zona de variáveis. 156157 ;************************************************************************************

2

Page 169: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

158 ; DECLARAÇÃO DE VARIÁVEIS NA ZONA COMUM *159 ;************************************************************************************160 ; Zona de 16 bytes161 ; ----------------162 CBLOCK 0x70 ; Inicio da zona de variáveis (0x70 à 0x7Fh).163 W_temp : 1 ; Backup do registo W.164 STATUS_temp : 1 ; Backup do registo STATUS.165 FSR_temp : 1 ; Backup do registo FSR. 166 PCLATH_temp : 1 ; Backup do registo PCLATH (se o programa>2K).167 Temp : 1 ; Var. temporária. 168 ENDC ; Fim da zone de variáveis.169170 ;------------------------------------------------------------------------------------171 ;************************* VECTOR DE ARRANQUE APÓS RESET ****************************172 ;------------------------------------------------------------------------------------173 org 0x00 ; Endereço de partida após RESET174 movlw high main_init175 movwf PCLATH ; Inicialização do PCLATH.176 goto main_init ; Salto para a rotina de inicio.177178 ;////////////////////////////////////////////////////////////////////////////////////179 ; I N T E R R U P Ç Õ E S180 ;////////////////////////////////////////////////////////////////////////////////////181182 ;************************************************************************************183 ; ROTINA DAS INTERRUPÇÕES: *184 ;************************************************************************************185 ; Se não for utilizado o endereçamento indirecto nas interrupções não é necessário 186 ;fazer backup do registo FSR.187 ; Se o programa não ocupar mais de 2K, não é necessário fazer backup do registo 188 ;PCLATH.189 ;------------------------------------------------------------------------------------190 org 0x04 ; Endereço de partida após interrupção191192 ; Backup dos registos193 ; -------------------194 backup_reg:195 movwf W_temp ; Guardar o registo w.196 swapf STATUS, w ; Swap do SATUS e passar para o w.197 movwf STATUS_temp ; Guardar o valor de w em STATUS_temp.198 movf FSR , w ; Passar o valor do FSR para o w.199 movwf FSR_temp ; Guardar o valor do w(FSR) em FSR_temp.200 movf PCLATH , w ; Passar o valor do PCLATH para o w.201 movwf PCLATH_temp ; Guardar o valor do w(PCLATH)em PCLATH_temp.202 clrf PCLATH ; Posicionamento na página de memória 0.203204 ; Tratamento das interrupções205 ; ---------------------------206 sw_tmr2: ; Interrupção TMR2:207 bsf STATUS,RP0 ; Aceder ao banco 1.208 btfss PIE1,TMR2IE ; Verificar se a interrupcção foi autorizada.209 goto restore_reg ; Se não, testar outra interrupção.210 bcf STATUS,RP0 ; Se sim, aceder ao banco 0.211 btfss PIR1,TMR2IF ; Verifivar se a flag foi activada.212 goto restore_reg ; Se a flag não está activada testar outra interrupção.213 call int_tmr2 ; Se sim, executar a interrupção.214 bcf PIR1,TMR2IF ; Apagar a flag de interrupção.215 goto restore_reg ; Restaurar os registos.216217 ; Restauro dos registos218 ; ---------------------219 restore_reg:220 movf PCLATH_temp , w ; Carrega o antigo PCLATH.221 movwf PCLATH ; Restaura o PCLATH.222 movf FSR_temp , w ; Carrega o antigo FSR. 223 movwf FSR ; Restaura o FSR.224 swapf STATUS_temp,w ; Swap do W_temp e guarda-o em w.225 movwf STATUS ; Restauro do registo STATUS.226 swapf W_temp,f ; Inversão do L e do H no antigo w, sem alterar o Z.227 swapf W_temp,w ; Reinversão do L e do H no antigo w. 228 ; w restaurado sem modificar o status.229 retfie ; Return from interrupt.230231 ; ///////////////////////////////////////////////////////////////////////////////////232 ; S U B - R O T I N A S :233 ; ///////////////////////////////////////////////////////////////////////////////////234235 ;************************************************************************************236 ; >INTERRUPÇÃO TIMER 2< *237 ;************************************************************************************

3

Page 170: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

238 int_tmr2239 BANK0240 ; Actualizar o valor do PWM241 ; ------------------------242 movfw SpR_value ; SpR_value -> w243 movwf CCPR1L ; w -> CCPR1L244 ; Obter o valor da Velocidade real de rotação245 ; -------------------------------------------246 btfsc Status_flag,5 ; A flag de tempo de amostragem foi activada?247 goto Count_loop ; Sim então, ir para...248 bcf T1CON,TMR1ON ; Não então, parar contagem do TMR1249 bsf Status_flag,5 ; Activar a flag de tempo de amostragem.250 clrf TMR1L ; Limpar o TMR1L251 clrf TMR1H ; Limpar o TMR1H252 bsf T1CON,TMR1ON ; Iniciar a contagem do TMR1253 Count_loop254 btfsc Status_flag,6 ; A flag do factor tempo de amostragem foi activada?255 goto Count_loop1256 decfsz Contador1_tmr2257 return258 Count_loop1259 bsf Status_flag,6 ; Activar a flag do factor tempo de amostragem.260 decfsz Contador2_tmr2261 return262 bcf T1CON,TMR1ON ; Parar contagem do TMR1263 movf TMR1L,w ; TMR1L -> w264 movwf Vel_actual ; w -> Vel_actual265 movlw COMPTVAL1_tmr2 ; Reiniciar o valor do contador de passagens,266 movwf Contador1_tmr2 ; pela interrupção do TMR2.267 movlw COMPTVAL2_tmr2 ; Reiniciar o valor do contador de passagens,268 movwf Contador2_tmr2 ; pela interrupção do TMR2.269 bcf Status_flag,6 ; Reiniciar a flag do factor tempo de amostragem.270 bcf Status_flag,5 ; Reiniciar a flag de tempo de amostragem.271 bsf Status_flag,4 ; Activar a flag de leitura da velocidade do encoder.272 return ; fim da sub-rotina de interrupção TMR2273 ;************************************************************************************274 ; FUNÇÃO PARA LER A ORDEM DO PC *275 ;************************************************************************************276 Read_order ; Ler os 4 bits provenientes do PC 277 ; --------------------------------278 movfw PORTA ; PORTA -> w279 andlw 0x0F ; Para obter apenas o valor dos 4 LSb. 280 movwf MoR_value ; w -> MoR_value281 return282283 ;************************************************************************************284 ; FUNÇÃO PARA DISPONIBILIZAR O VALOR DO ERRO *285 ;************************************************************************************286 Write_error287 movfw erro_actual ; erro_actual -> w288 movwf PORTB ; w -> PORTB289 return290 ;************************************************************************************291 ; FUNÇÃO PARA DISPONIBILIZAR O VALOR DA VELOCIDADE REAL *292 ;************************************************************************************293 Write_velocity294 movfw Vel_actual ; Vel_actual -> w295 movwf PORTB ; w -> PORTB296 return297298 ;************************************************************************************299 ; FUNÇÃO PARA VERIFICAR SE O VALOR RECEBIDO É NOVO *300 ;************************************************************************************301 Test_value302 movfw MoR_value ; MoR_value -> w.303 xorwf Old_MoR_value,w ; (w)xor(f)-> w.304 btfss STATUS,Z ; O valor lido é diferente?305 call Det_valor ; Sim, então chamar a função Det_valor306 return ; Não, então sair.307308 ;************************************************************************************309 ; FUNÇÃO PARA DETERMINAR O VALOR A APLICAR *310 ;************************************************************************************311 Det_valor312 ; Determinar o valor aplicar313 ; ---------------------------314 movfw MoR_value ; MoR_value -> w.315 movwf Old_MoR_value ; Actualizar o valor antigo.316 xorlw 0x00317 btfsc STATUS,Z ; O valor lido é igual a 0x00?

4

Page 171: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

318 goto Valor_00 ; Sim, então ir para...319 movfw MoR_value ; Não então, MoR_value -> w.320 xorlw 0x01321 btfsc STATUS,Z ; O valor lido é igual a 0x01?322 goto Valor_01 ; Sim, então ir para...323 movfw MoR_value ; Não então, MoR_value -> w.324 xorlw 0x02325 btfsc STATUS,Z ; O valor lido é igual a 0x02?326 goto Valor_02 ; Sim, então ir para...327 movfw MoR_value ; Não então, MoR_value -> w.328 xorlw 0x03329 btfsc STATUS,Z ; O valor lido é igual a 0x03?330 goto Valor_03 ; Sim, então ir para...331 movfw MoR_value ; Não então, MoR_value -> w.332 xorlw 0x04333 btfsc STATUS,Z ; O valor lido é igual a 0x04?334 goto Valor_04 ; Sim, então ir para...335 movfw MoR_value ; Não então, MoR_value -> w.336 xorlw 0x05337 btfsc STATUS,Z ; O valor lido é igual a 0x05?338 goto Valor_05 ; Sim, então ir para...339 movfw MoR_value ; Não então, MoR_value -> w.340 xorlw 0x06341 btfsc STATUS,Z ; O valor lido é igual a 0x06?342 goto Valor_06 ; Sim, então ir para...343 movfw MoR_value ; Não então, MoR_value -> w.344 xorlw 0x07345 btfsc STATUS,Z ; O valor lido é igual a 0x07?346 goto Valor_07 ; Sim, então ir para...347 movfw MoR_value ; Não então, MoR_value -> w.348 xorlw 0x08349 btfsc STATUS,Z ; O valor lido é igual a 0x08?350 goto Valor_08 ; Sim, então ir para...351 movfw MoR_value ; Não então, MoR_value -> w.352 xorlw 0x09353 btfsc STATUS,Z ; O valor lido é igual a 0x09?354 goto Valor_09 ; Sim, então ir para...355 movfw MoR_value ; Não então, MoR_value -> w.356 xorlw 0x0A357 btfsc STATUS,Z ; O valor lido é igual a 0x0A?358 goto Valor_0A ; Sim, então ir para...359 movfw MoR_value ; Não então, MoR_value -> w.360 xorlw 0x0B361 btfsc STATUS,Z ; O valor lido é igual a 0x0B?362 goto Valor_0B ; Sim, então ir para...363 movfw MoR_value ; Não então, MoR_value -> w.364 xorlw 0x0C365 btfsc STATUS,Z ; O valor lido é igual a 0x0C?366 goto Valor_0C ; Sim, então ir para...367 return368 Valor_00369 movlw .0370 movwf Velocidade ; w -> Velocidade371 goto Det_valor_EXIT372 Valor_01373 movlw .1374 movwf Velocidade ; w -> Velocidade375 goto Det_valor_EXIT376 Valor_02377 movlw .2378 movwf Velocidade ; w -> Velocidade379 goto Det_valor_EXIT380 Valor_03381 movlw .4382 movwf Velocidade ; w -> Velocidade383 goto Det_valor_EXIT384 Valor_04385 movlw .9386 movwf Velocidade ; w -> Velocidade387 goto Det_valor_EXIT388 Valor_05389 movlw .13390 movwf Velocidade ; w -> Velocidade391 goto Det_valor_EXIT392 Valor_06393 movlw .17394 movwf Velocidade ; w -> Velocidade395 goto Det_valor_EXIT396 Valor_07397 movlw .26

5

Page 172: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

398 movwf Velocidade ; w -> Velocidade399 goto Det_valor_EXIT400 Valor_08401 movlw .34402 movwf Velocidade ; w -> Velocidade403 goto Det_valor_EXIT404 Valor_09405 movlw .43406 movwf Velocidade ; w -> Velocidade407 goto Det_valor_EXIT408 Valor_0A409 movlw .52410 movwf Velocidade ; w -> Velocidade411 goto Det_valor_EXIT412 Valor_0B413 movlw .60414 movwf Velocidade ; w -> Velocidade415 goto Det_valor_EXIT416 Valor_0C417 movlw .69418 movwf Velocidade ; w -> Velocidade419 Det_valor_EXIT420 movfw Velocidade421 movwf Vel_ref ; Actualizar a velocidade de referência.422 movwf SpR_value ; Speed (0-127).423 bcf Status_flag,2 ; Reiniciar a flag de chegada de dados (Sense+Speed).424 clrf erro_acum ; Limpar o valor da variável erro_acum.425 clrf erro_antigo ; Limpar o valor da variável erro_antigo.426 clrf PID_flag ; Limpar as flags de controlo.427 return428 ;************************************************************************************429 ; FUNÇÃO PARA IMPLEMENTAR O CONTROLO PID DA VELOCIDADE *430 ;************************************************************************************431 ; Partindo da expressão simplificada:432 ; u(k)=p(k)+i(k)+d(k) onde p(k) é o termo proporcional, i(k) é o termo integral e 433 ; d(k) é o termo derivativo. 434 ; p(k)= (Kp × erro_actual)435 ; i(k)= ((Ki × erro_actual) + erro_acum)) 436 ; d(k)= (Kd × (erro_actual - erro_antigo))437 ;------------------------------------------------------------------------------------438 Controlo439 ; clrwdt ; Limpar o Watchdog Timer440 clrf SUMHI ; Iniciarlizar o MSB do somatório.441 clrf SUMLO ; Iniciarlizar o LSB do somatório.442443 ; Cálculo do erro do sistema: 444 ; ------------------------------------------------------------------------445 ; NOTA: O valor do erro do sistema obtem-se calculando a diferença entre o 446 ; valor de referência e o valor no instante k ou valor actual.447 ; erro_actual=(Vel_ref - Vel_actual) 448 ; ------------------------------------------------------------------------449 C_ERROR450 movfw Vel_actual ; Vel_actual -> w 451 subwf Vel_ref,w ; Vel_ref - w -> w452 btfss STATUS,C ; O erro é positivo?453 goto MNS_ER ; Não, então ir para "MNS_ER".454 PLS_ER ; Sim, então executar "PLS_ER".455 movwf erro_actual ; Passar o resultado para a variável erro_actual.456457 ; Verificar se o valor do erro_actual é igual a zero458 ; --------------------------------------------------459 movfw erro_actual460 btfsc STATUS,Z ; erro_actual = 0?461 goto ERROR_BKP ; Sim, então ir para "ERROR_BKP".462 bcf PID_flag,0 ; Não, então activar a flag indicadora de erro 463 goto CE_EXIT ; positivo e aplicar o controlo.464 MNS_ER465 movfw Vel_ref ; Vel_ref -> w466 subwf Vel_actual,w467 movwf erro_actual468 bsf PID_flag,0 ; Activar a flag indicadora de erro negativo.469 CE_EXIT470471 ; Cálculo do termo proporcional: 472 ; ------------------------------------------------------------------------473 ; NOTA: O termo proporcional obtem-se através do produto do ganho do 474 ; termo proporcional pelo erro do sistema (Kp × erro_actual). Este termo 475 ; está limitado entre +/-100. Quanto maior for o ganho proporcional menor 476 ; será o tempo de subida do sistema, mas em contrapartida, maiores terão 477 ; que ser os ganhos integral e derivativo de modo a tornar o sistema

6

Page 173: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

478 ; estável.479 ; p(t)=(Kp × erro_actual)480 ; ------------------------------------------------------------------------ 481 C_PROP482 movfw erro_actual ; erro_actual -> w 483 movwf mulcnd 484 movlw Kp485 movwf mulplr486 call mpy8x8_S ; Multiplicar Kp x erro_actual.487 ;call DIV_LMT ; Dividir por 16 e limitar entre 0 e 100.488 call LMT100 ; Limitar o valor entre 0 e 100.489 RESTORE_SGN490 btfss PID_flag,0 ; O erro calculado é positivo?491 goto ADDPROP ; Sim, então ir para...492 comf L_byte,f ; Não, então cálcular o complemento 493 incf L_byte,f ; para 2 do L_byte.494495 ; Adicionar o valor do termo proporcional ao somatório 496 ; ----------------------------------------------------497 ADDPROP498 movfw L_byte ; Adicionar o valor do ganho proporcional499 addwf SUMLO,f ; ao somatório.500 btfsc STATUS,C ; Foi gerado um "CARRY-OUT"?501 incf SUMHI,f ; Sim, então...502 movlw 0x00 ; Não, então...503 btfsc SUMLO,7 ; O MSbit de SUMLO é 1?504 movlw 0xFF ; Sim, então 0xFF -> w505 addwf SUMHI,f ; SUMHI + w -> SUMHI506 CP_EXIT507508 ; Cálcular o termo integral: 509 ; ------------------------------------------------------------------------510 ; NOTA: O termo integral advém do valor do erro acumulado durante o 511 ; processo. Por mais pequeno que seja o erro se este persistir durante 512 ; algum tempo irá originar um valor considerável no acumulador, de modo a 513 ; actuar o sistema. O valor do termo integral pode ser obtido através do 514 ; produto do Ki pelo somatório do erro (Ki × erro_acum). Tal como no 515 ; termo proporcional o termo integral também está limitado para +/-100.516 ; i(k)= ((Ki × erro_actual) + erro_acum)) 517 ; ------------------------------------------------------------------------ 518 C_INT519 btfss PID_flag,3 ; O erro acumulado é positivo?520 goto ACUM_P ; Sim, então ir para...521 ACUM_N ; Não, então...522 btfsc PID_flag,0 ; Verificar o sinal do valor do erro_actual.523 goto MNS_0 ; É negativo, então ir para...524 PLS_0 ; É positivo, então...525 ; erro_actual positivo e erro_acum negativo:526 ; -----------------------------------------527 movfw erro_actual ; erro_actual -> w 528 movwf mulcnd 529 movlw Ki530 movwf mulplr531 call mpy8x8_S ; Multiplicar Ki x erro_actual.532 call LMT100 ; Limitar o valor entre 0 e 100.533 movfw L_byte ; L_byte -> w534 comf erro_acum,f ; Cálcular o complemento para 2 do 535 incf erro_acum,f ; erro_acum.536 movfw L_byte ; L_byte -> w537 addwf erro_acum,f ; erro_acum= erro_acum + (Ki x erro_actual) 538 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.539 bcf PID_flag,3 ; É positivo, então definir o sinal.540 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.541 goto SIGN_TI ; É positivo, então...542 bsf PID_flag,3 ; É negativo, então definir o sinal.543 comf erro_acum,f ; Cálcular o complemento para 2 544 incf erro_acum,f ; do erro_acum.545 movfw erro_acum ; |erro_acum| -> w546 movwf L_byte ; w -> L_byte547 call LMT100 ; Limitar o valor entre 0 e 100.548 movfw L_byte ; L_byte - > w549 movwf erro_acum ; w -> erro_acum550 goto SIGN_TI ; Aplicar o sinal no termo integral.551 MNS_0 552 ; erro_actual negativo e erro_acum negativo:553 ; -----------------------------------------554 bsf PID_flag,3 ; Definir o erro_acum como sendo negativo.555 movfw erro_actual ; erro_actual -> w 556 movwf mulcnd 557 movlw Ki

7

Page 174: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

558 movwf mulplr559 call mpy8x8_S ; Multiplicar Ki x erro_actual.560 call LMT100 ; Limitar o valor entre 0 e 100.561 movfw L_byte ; L_byte -> w562 addwf erro_acum,f ; erro_acum= |erro_acum|+(Ki × |erro_actual|)563 movfw erro_acum ; |erro_acum| -> w564 movwf L_byte ; w -> L_byte565 call LMT100 ; Limitar o valor entre 0 e 100.566 movfw L_byte ; L_byte - > erro_acum567 movwf erro_acum ;568 goto SIGN_TI ; Aplicar o sinal no termo integral.569 ACUM_P570 btfsc PID_flag,0 ; Verificar o sinal do valor do erro_actual.571 goto MNS_1 ; É negativo, então ir para...572 PLS_1 ; É positivo, então...573 ; erro_actual positivo e erro_acum positivo:574 ; -----------------------------------------575 bcf PID_flag,3 ; Definir o erro_acum como sendo positivo.576 movfw erro_actual577 movfw erro_actual ; erro_actual -> w 578 movwf mulcnd 579 movlw Ki580 movwf mulplr581 call mpy8x8_S ; Multiplicar Ki x erro_actual.582 call LMT100 ; Limitar o valor entre 0 e 100.583 movfw L_byte ; L_byte -> w584 addwf erro_acum,f ; erro_acum= |erro_acum|+(Ki × |erro_actual|)585 movfw erro_acum ; erro_acum -> w586 movwf L_byte ; w -> L_byte587 call LMT100 ; Limitar o valor entre 0 e 100.588 movfw L_byte ; L_byte - > erro_acum589 movwf erro_acum ;590 goto SIGN_TI ; Aplicar o sinal no termo integral.591 MNS_1 592 ; erro_actual negativo e erro_acum positivo:593 ; ----------------------------------------- 594 movfw erro_actual ; erro_actual -> w 595 movwf mulcnd 596 movlw Ki597 movwf mulplr598 call mpy8x8_S ; Multiplicar Ki x erro_actual.599 call LMT100 ; Limitar o valor entre 0 e 100.600 movfw L_byte ; L_byte -> w601 comf L_byte,f ; Cálcular o complemento para 2 do 602 incf L_byte,f ; L_byte.603 movfw L_byte ; L_byte -> w604 addwf erro_acum,f ; erro_acum= erro_acum + (-Ki x erro_actual) 605 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.606 bcf PID_flag,3 ; É positivo, então definir o sinal.607 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.608 goto SIGN_TI ; É positivo, então...609 bsf PID_flag,3 ; É negativo, então definir o sinal.610 comf erro_acum,f ; Cálcular o complemento para 2 611 incf erro_acum,f ; do erro_acum.612 movfw erro_acum ; |erro_acum| -> w613 movwf L_byte ; w -> L_byte614 call LMT100 ; Limitar o valor entre 0 e 100.615 movfw L_byte ; L_byte - > w616 movwf erro_acum ; w -> erro_acum617 goto SIGN_TI ; Aplicar o sinal no termo integral.618 SIGN_TI619 btfsc PID_flag,3 ; O sinal do acumulador de erro é positivo?620 goto TI_N ; Não, então ir para ...621 TI_P ; Sim, então...622 movfw erro_acum623 movwf L_byte624 call LMT100 ; Limitar o valor entre 0 e 100.625 movfw L_byte ; L_byte - > erro_acum626 movwf erro_acum ;627 movwf L_byte628 goto ADDINT629 TI_N630 movfw erro_acum631 movwf L_byte632 call LMT100 ; Limitar o valor entre 0 e 100.633 movfw L_byte ; L_byte - > erro_acum634 movwf erro_acum ;635 comf L_byte,f ; Cálcular o complemento para 2 636 incf L_byte,f ; desse valor.637

8

Page 175: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

638 ; Adicionar o valor do termo integral ao somatório 639 ; ------------------------------------------------640 ADDINT641 movfw L_byte ; L_byte -> w642 addwf SUMLO,f ; SUMLO= SUMLO + w 643 btfsc STATUS,C ; Foi gerado um "CARRY-OUT"?644 incf SUMHI,f ; Sim, então...645 movlw 0x00 ; Não, então...646 btfsc PID_flag,3 ; O erro_acum é negativo?647 movlw 0xFF ; Sim, então 0xFF -> w648 addwf SUMHI,f ; SUMHI + w -> SUMHI 649 CI_EXIT650651 ; Cálculo do termo derivativo: 652 ; ------------------------------------------------------------------------653 ; NOTA: O termo derivativo baseia-se na análise da variação do valor do 654 ; erro em relação ao seu valor anterior. Básicamente consiste em subtrair 655 ; o antigo valor do erro ao erro actual. Uma vez que o tempo de ciclo do 656 ; programa é práticamente constante pode usar-se como sendo o "dt" do 657 ; desejado "de/dt". Esta derivada do erro é então multiplicada pelo ganho 658 ; do termo diferencial Kd, obtendo desta forma o valor do termo derivativo.659 ; d(t)= (Kd × (erro_actual - erro_antigo))660 ; ------------------------------------------------------------------------661 C_DIFF662 movfw erro_actual ; Passar o valor do erro_actual para o registo w. 663 btfss PID_flag,0 ; O valor do erro_actual é positivo?664 goto LO_BYTE ; Sim, então ir para... 665 comf erro_actual,f ; Não, então cálcular o complemento para 2 666 incf erro_actual,w ; desse valor.667 comf erro_actual,f ; Restaurar o valor do erro_actual. 668 LO_BYTE669 movwf ACCbLO ; Para subtração670 movlw 0x00671 btfsc PID_flag,0 ; Passar o sinal para o Byte mais significativo.672 movlw 0xFF673 movwf ACCbHI674 movfw erro_antigo ; Passar o valor do erro_antigo para o registo w. 675 btfss PID_flag,1 ; O valor do erro_antigo é positivo?676 goto LO_BYTEO ; Sim, então ir para... 677 comf erro_antigo,f ; Não, então cálcular o complemento para 2 678 incf erro_antigo,w ; desse valor.679 comf erro_antigo,f ; Restaurar o valor do erro_antigo. 680 LO_BYTEO681 movwf ACCaLO ; Para subtração682 movlw 0x00683 btfsc PID_flag,1 ; Passar o sinal para o Byte mais significativo.684 movlw 0xFF685 movwf ACCaHI686 call D_sub ; erro_actual - erro_antigo687 STRIP_SGN688 btfsc ACCbHI,7 ; O sinal do resultado é positivo?689 goto NEG_ABS ; Não, então ir para...690 goto POS_ABS ; Sim, então ir para... 691 NEG_ABS692 bsf PID_flag,2 ; O resultado é negativo, então colocar a flag a 1 e693 comf ACCbLO,f ; cálcular o complemento para 2 do resultado.694 incf ACCbLO,w695 movwf de_dt 696 goto MULT_Kd697 POS_ABS698 bcf PID_flag,2 ; O resultado é positivo, então colocar a flag a 0 e699 movfw ACCbLO ; guardar o resultado.700 movwf de_dt701702 ; Multiplicar o resultado por Kd703 ; ------------------------------704 MULT_Kd705 movfw de_dt ; Passar o valor do de/dt para o multiplicando.706 movwf mulcnd ; 707 movlw Kd ; Passar o valor do Kd para o multiplicador.708 movwf mulplr ; 709 call mpy8x8_S ; Multiplicar (de_dt) x Kd710 ;call DIV_LMT ; Dividir por 16 e limitar entre 0 e 100.711 call LMT100 ; Limitar o valor entre 0 e 100.712 RE_SGN713 ;---------714 movfw L_byte715 btfsc STATUS,Z ; O termo derivativo é nulo?716 goto CD_EXIT ; Sim, então ir para...717 ;---------

9

Page 176: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

718 btfss PID_flag,2 ; O sinal do valor de_dt é positivo?719 goto ADDDIF ; Sim, então ir para...720 comf L_byte,f ; Não, então 721 incf L_byte,f722723 ; Adicionar o valor do termo derivativo ao somatório 724 ; ----------------------------------------------------725 ADDDIF726 movlw 0x00727 btfsc PID_flag,2 ; O sinal do valor de_dt é positivo? 728 movlw 0xFF ; Não, então aplicar o sinal negativo ao MSB.729 movwf ACCbHI ; Sim, então aplicar o sinal positivo ao MSB.730 movfw L_byte ; Passar o resultado de Kd*(DE/DT) -> w. 731 movwf ACCbLO ; w -> ACCbLO732 movfw SUMLO ; Passar o valor actual do SUMLO -> w.733 movwf ACCaLO ; w -> ACCaLO. 734 movfw SUMHI ; Passar o valor actual do SUMHI -> w.735 movwf ACCaHI ; w -> ACCaHI.736 call D_add ; Chamar a função de adição.737 movfw ACCbLO ; Guardar os valores resultantes em738 movwf SUMLO ; SUMLO e SUMHI respectivamente.739 movfw ACCbHI740 movwf SUMHI741 CD_EXIT742743 ; Limitar o somatório final para um valor entre 0 e 100%744 ; ------------------------------------------------------745 L_SUMM746 btfss SUMHI,7 ; O sinal do somatório é positivo? 747 goto POS_LM ; Sim, então ir para...748 ; comf SUMHI,1 ; Não, então...749 ; comf SUMLO,1750 ; incf SUMLO,1751 clrf SUMHI ; Não, então...752 clrf SUMLO753 POS_LM 754 movlw 0x01 ; Subtrair 1 ao SUMHI, 755 subwf SUMHI,w ; para ver se este possui algum valor.756 btfss STATUS,C ; O SUMHI possui algum valor?757 goto LB_L ; Não, então validar apenas o LOW BYTE.758 movlw .100 ; Sim, então limitar o SUMLO a 100.759 movwf SUMLO 760 goto LP_EXIT761 LB_L762 movlw .100 ; Limitar a amplitude do valor para 100 em décimal. 763 subwf SUMLO,w ; (SUMLO - w) -> w 764 btfss STATUS,C ; O resultado é positivo?765 goto LP_EXIT ; Sim, então saltar para LP_EXIT 766 movlw .100 ; Não, então limitar o SUMLO a 100.767 movwf SUMLO768 LP_EXIT769770 ; Passar o valor final do somatório para o registo SpR_value771 ; ----------------------------------------------------------772 WRITE_RESULT773 movfw SUMLO774 movwf SpR_value ; Speed (0-100). 775776 ; Backup do erro777 ; --------------778 ERROR_BKP779 movfw erro_actual ; Passar o valor do erro_actual780 movwf erro_antigo ; para o erro_antigo. 781 bcf PID_flag,1 ; Colocar a flag do erro_antigo a 0.782 btfsc PID_flag,0 ; O sinal do erro actual é positivo? 783 bsf PID_flag,1 ; Não então colocar a flag do erro_antigo a 1.784785 Controlo_EXIT786 bcf Status_flag,4 ; Reiniciar a flag de leitura da velocidade do encoder.787 return788789 ;************************************************************************************790 ; FUNÇÕES ARITMÉTICAS *791 ;************************************************************************************792 ; Multiplicação 8x8 793 ; -----------------794 mpy8x8_S795 clrf H_byte796 clrf L_byte797 movlw .8

10

Page 177: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

798 movwf count ; Count = 8799 movfw mulcnd800 bcf STATUS,C ; Limpar o carry.801 loop 802 rrf mulplr,f803 btfsc STATUS,C804 addwf H_byte,f805 rrf H_byte,f806 rrf L_byte,f807 decfsz count,f808 goto loop809 return810811 ; Subtracção de dupla precisão ( ACCb-ACCa->ACCb)812 ; -----------------------------------------------813 D_sub 814 call neg_A ; Obter o comp2 do valor e depois adiciona-lo.815816 ; Adição de dupla precisão ( ACCb+ACCa->ACCb )817 ; --------------------------------------------818 D_add 819 movfw ACCaLO820 addwf ACCbLO,f ; Adicionar o LSB821 btfsc STATUS,C 822 incf ACCbHI,f823 movfw ACCaHI 824 addwf ACCbHI,f ; Adicionar o MSB825 return826 neg_A 827 comf ACCaLO,f ; Complemento para 1 do valor do ACCa.828 incf ACCaLO,f ; Complemento para 2 do valor do ACCa.829 btfsc STATUS,Z830 decf ACCaHI,f831 comf ACCaHI,f832 return833834 ; Dividir o resultado por 16 e limita-lo entre 0 e 100 835 ; ----------------------------------------------------836 DIV_LMT837 SHIFT ; Dividir o resultado por 2.838 SHIFT ; Dividir o resultado por 2.839 SHIFT ; Dividir o resultado por 2.840 SHIFT ; Dividir o resultado por 2. 841 LMT100842 movlw 0x01 ; Subtrair 1 ao HIGH BYTE, 843 subwf H_byte,w ; para ver se este possui algum valor.844 btfss STATUS,C ; O HIGH BYTE possui algum valor?845 goto L8_E ; Não, então validar apenas o LOW BYTE.846 movlw .100 ; Limitar o L_byte a 100.847 movwf L_byte 848 goto LMT100_EXIT849 L8_E850 movlw .100 ; Limitar a amplitude do valor para 100 em décimal. 851 subwf L_byte,w ; (L_byte - w) -> w 852 btfss STATUS,C ; O resultado é positivo?853 goto LMT100_EXIT ; Sim, então saltar para LMT_EXIT 854 movlw .100 ; Não, então limitar o L_byte a 100.855 movwf L_byte856 LMT100_EXIT857 return858859 ;************************************************************************************860 ; TEMPORIZAÇÃO (ms) *861 ;************************************************************************************862 msDelay863 movwf MsDelayCounter+1864 movwf Time_value ; Guardar o valor de w865 movlw Oscilator_value ; Inicializar o contador (segundo o oscilador usado)866 movwf Counter ; w -> Counter 867 Loop_Quartz_xxMHz868 movfw Time_value ; Time_value -> w869 movwf MsDelayCounter+1870 clrf MsDelayCounter+0871 ;1ms após um ciclo interno872 msDelayLoop873 clrwdt ; Limpar o Watchdog Timer.874 decfsz MsDelayCounter+0,F875 goto msDelayLoop876 clrwdt ; Limpar o Watchdog Timer.877 decfsz MsDelayCounter+1,F

11

Page 178: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

878 goto msDelayLoop879 decfsz Counter,F880 goto Loop_Quartz_xxMHz881 return882883 ;************************************************************************************884 ; INICIALIZAÇÃO DOS PORTOS *885 ;************************************************************************************886 init_ports887 ; Inicializar PORTS (banco 0 e 1)888 ; -------------------------------889 BANK0 ; Aceder ao banco 0.890 clrf PORTA ; Saídas do PORTA a 0.891 clrf PORTB ; Saídas do PORTB a 0.892 clrf PORTC ; Saídas do PORTC a 0.893 clrf PIR1894 BANK1 ; Aceder ao banco 1.895 movlw ADCON1VAL ; PORTA no modo A/D.896 movwf ADCON1 ; Escrever no registo ADCON1.897 movlw DIRPORTA ; Direcção do PORTA.898 movwf TRISA ; Escrever no registo de direcção TRISA.899 movlw DIRPORTB ; Direcção do PORTB.900 movwf TRISB ; Escrever no registo de direcção TRISB.901 movlw DIRPORTC ; Direcção do PORTC.902 movwf TRISC ; Escrever no registo de direcção TRISC.903904 ; Registo de opções (banco 1)905 ; ---------------------------906 movlw OPTIONVAL ; copiar o valor da constante para o w.907 movwf OPTION_REG ; configurar o registo OPTION_REG com esse valor.908909 ; Limpar RAM banco 0910 ; ------------------911 bcf STATUS,RP0 ; Aceder ao banco 0.912 movlw 0x20 ; Inicialização do apontador,913 movwf FSR ; de endereçamento indirecto.914 init_ram915 clrf INDF ; Limpar a RAM.916 incf FSR,f ; Apontar para o proximo.917 btfss FSR,7 ; Verificar se chegou ao fim(>7Fh).918 goto init_ram ; Se não chegou, continuar no ciclo.919 return920921 ;************************************************************************************922 ; INICIALIZAÇÃO DO TIMER1 *923 ;************************************************************************************924 init_tmr1925 BANK0 ; Aceder ao banco 0.926 movlw B'00000110' ; Configurar o TMR1 no modo contador assíncrono.927 movwf T1CON ; Configurar o registo T1CON com esse valor.928 return929930 ;************************************************************************************931 ; INICIALIZAÇÃO DO TIMER2 *932 ;************************************************************************************933 init_tmr2934 BANK1 ; Aceder ao banco 1.935 movlw PR2VAL ; PR2VAL - > w936 movwf PR2 ; w -> PR2937 BANK0 ; Aceder ao banco 0.938 movlw B'0000100' ; Pós-divisor a 1, pré-divisor a 1, timer ON939 movwf T2CON ; Configurar o registo T2CON com esse valor.940 movlw CCP1CONVAL ; Copiar o valor da constante para o w.941 movwf CCP1CON ; Configurar o registo SSPCON com esse valor.942 clrf CCPR1L ; Inicializar o PWM com o valor zero.943944 ; Inicializar a variável945 ; -----------------------946 movlw COMPTVAL1_tmr2 ; Definir o valor do contador de passagens,947 movwf Contador1_tmr2 ; pela interrupção do TMR2.948 movlw COMPTVAL2_tmr2 ; Definir o valor do contador de passagens,949 movwf Contador2_tmr2 ; pela interrupção do TMR2.950 return951952 ; ///////////////////////////////////////////////////////////////////////////////////953954 ; P R O G R A M A955956 ; ///////////////////////////////////////////////////////////////////////////////////957

12

Page 179: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Documents and Settings\Victor Silva\Ambiente de trabalho\Dissertação\Anexos\PID_LPT.asm

958 ;************************************************************************************959 ; Inicializações *960 ;************************************************************************************961 main_init962 pagesel init_ports963 call init_ports ; Inicialização dos Portos.964965 pagesel init_tmr1966 call init_tmr1 ; Inicialização do TMR1.967 pagesel init_tmr2968 call init_tmr2 ; Inicialização do TMR2.969970 ; Definir o registos de interrupções (banco 1)971 ; --------------------------------------------972 BANK1973 clrf SSPSTAT ; Limpar o registo SSPSTAT.974 movlw PIE1VAL ; Copiar o valor da constante para o w. 975 movwf PIE1 ; Activar as interrupções SSPIE.976 movlw PIE2VAL ; Copiar o valor da constante para o w.977 movwf PIE2 ; Configurar o registo PIE2 com esse valor.978 movlw INTCONVAL ; Copiar o valor da constante para o w.979 movwf INTCON ; Activar as interrupções periféricas e globais.980 BANK0981 goto main982 983 ;************************************************************************************984 ; Corpo principal do programa *985 ;************************************************************************************986 main987 BANK0988 bsf LED_Vida989 main_loop990 BANK0991 clrwdt ; Limpar o Watchdog Timer.992 call Read_order993 call Test_value ; Chamar a função Test_value.994 btfss Status_flag,4 ; O valor da velocidade real foi obtido?995 goto main_loop ; Não, então ...996 call Write_velocity ; Sim, então ... 997 call Controlo 998 goto main_loop999 END1000 ;************************************************************************************1001 ; _/ \_ Fim *1002 ;************************************************************************************1003

13

Page 180: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA
Page 181: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

Anexo III - Programa do microcontrolador relativo à aplicação

pedagógica

Page 182: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA
Page 183: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1 ;************************************************************************************2 ; NOME: PID_RS232.asm *3 ; DATA: 21-08-2008 *4 ; VERSÃO: 1.0 *5 ; AUTOR: Victor Silva *6 ;************************************************************************************7 ; FICHEIRO NECESSÁRIO: p16f876.inc *8 ;************************************************************************************9 ; DESCRIÇÃO: Este estabelece uma comunicação série assíncrona com a porta RS232 * 10 ; do PC através de um MAX232. *11 ; Recebe do PC o valor da velocidade pretendida para o motor, bem como os *12 ; parâmetros para o controlo PID e transmite para o PC o valor da velocidade real *13 ; do motor e o erro actual. * 14 ; - 1 start-bit, 8 bits de dados; 1 bit de paridade par, 1 stop-bit) *15 ; - Velocidade da comunicação definida a 9600 bits/s (9615 bits/s reais). *16 ; - Utilização do modulo USART; *17 ; - O cristal de quartzo utilizado é de 20MHz. *18 ; - A frequência do PWM é de 50KHz. *19 ; - Controlo PID da velocidade do motor. *20 ;************************************************************************************21 ; \\|// *22 ; |º|º| *23 ; \-/ *24 ; /|.|\ Início *25 ;************************************************************************************26 #include <p16f876.inc> ; Definições específicas do uC.2728 __CONFIG _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_ON &

_HS_OSC 29 errorlevel -302 ; Para eliminar as mensagens relacionadas com o bank 0.3031 ;************************************************************************************32 ; CONSTANTES: *33 ;************************************************************************************34 ; >> Atenção, são endereços e não valores.(movlw e não movfw) <<35 OPTIONVAL EQU B'00000000' ; Valor para o registo OPTION_REG.36 INTCONVAL EQU B'11000000' ; Valor para o registo INTCON.37 PIE1VAL EQU B'00110010' ; Valor para o registo PIE1.38 PIE2VAL EQU B'00000000' ; Valor para o registo PIE2.39 CCP1CONVAL EQU B'00001100' ; Valor para o registo CCP1CON (PWM).40 SSPCONVAL EQU B'00000000' ; Valor para o registo SSPCON (SPI/I2C).41 TXSTAVAL EQU B'01000100' ; Valor para o registo TXSTA (USART). 42 RCSTAVAL EQU B'11010000' ; Valor para o registo RCSTA (USART).43 ADCON1VAL EQU B'00000110' ; Valor para o registo ADCON1 (Analógico/Digital).4445 ; Constante para o Baude Rate46 ; ---------------------------47 SPBRGVAL EQU D'129' ; Para definir o Baud Rate a 9600 bps no modo High Speed.48 ; Baude Rate=Fosc/(16(X+1))=> X=12949 ; Constantes para as dimensões dos buffers (recepção e transmissão)50 ; -----------------------------------------------------------------51 RX_BUF_LEN EQU .96 ; Dimensão do buffer de recepção.52 TX_BUF_LEN EQU RX_BUF_LEN ; Dimensão do buffer de emissão.5354 ; Constantes para a frequência do PWM e o tempo de amostragem55 ; -----------------------------------------------------------56 PR2VAL EQU D'99' ; O Timer 2 conta até (PR2VAL+1)×1×1×0,2µs=20us => f=50KHz57 COMPTVAL1_tmr2 EQU D'99' ; Número de passagem no tmr2:58 COMPTVAL2_tmr2 EQU D'1' ; Número de

passagem=(COMPTVAL1_tmr2+COMPTVAL2_tmr2)×20us=2000us59 ; V=12V=> Tmin(encoder)=40us=> 100*40us=4000us60 ; V=24V=> Tmin(encoder)=20us=> 100*20us=2000us6162 ; DIRECÇÃO DOS PORTOS I/O63 ; -----------------------64 DIRPORTA EQU B'00001111' ; Direcção do PORTA (1=input/0=output)65 DIRPORTB EQU B'00000000' ; Direcção do PORTB (1=input/0=output)66 DIRPORTC EQU B'10111001' ; Direcção do PORTC (1=input/0=output)6768 ;************************************************************************************69 ; DEFINIÇÕES: *70 ;************************************************************************************71 #DEFINE LED_Vida PORTA,5 ; LED ligado ao RA5.72 #DEFINE PARIDADE Serial_flag,0 ; Paridade calculada.73 #DEFINE ER_RX Serial_flag,1 ; Erro de recepção.74 #DEFINE Rec_Start Serial_flag,2 ; Chegada do caracter ''.75 #DEFINE Rec_Stop Serial_flag,3 ; Chegada do caracter ''.76 #DEFINE PWM PORTC,2 ; Linha PWM.77 #DEFINE Oscilator_value .578 ; Oscilator_value=5 para um oscilador de 20 MHz

1

Page 184: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

79 ; Oscilator_value=4 para um oscilador de 16 MHz80 ; Oscilator_value=3 para um oscilador de 12 MHz81 ; Oscilator_value=2 para um oscilador de 8 MHz82 ; Oscilator_value=1 para um oscilador de 4 MHz8384 ;************************************************************************************85 ; MACROS: *86 ;************************************************************************************87 BANK0 macro ; Aceder ao banco 088 bcf STATUS,RP089 bcf STATUS,RP190 endm9192 BANK1 macro ; Aceder ao banco 1 93 bsf STATUS,RP094 bcf STATUS,RP195 endm9697 BANK2 macro ; Aceder ao banco 298 bcf STATUS,RP099 bsf STATUS,RP1100 endm101102 BANK3 macro ; Aceder ao banco 3103 bsf STATUS,RP0104 bsf STATUS,RP1105 endm106107 SHIFT macro ; Divisão por 2108 bcf STATUS,C109 rrf L_byte,f110 bcf STATUS,C111 rrf H_byte,f112 btfsc STATUS,C113 bsf L_byte,7114 endm115 ;************************************************************************************116 ; DECLARAÇÃO DE VARIÁVEIS DO BANCO 0 *117 ;************************************************************************************118 ; Zona de 80 bytes119 ; ----------------120 CBLOCK 0x20 ; Inicio da zona de variáveis (0x20 à 0x6Fh).121 bufinptr : 1 ; Apontador para o caracter actual do buffer de entrada.122 bufoutptr : 1 ; Apontador para o caracter actual do buffer de saída.123 Serial_flag : 1 ; Conjunto de flags para a comunicação série:124 ; 0 : Paridade calculada.125 ; 1 : Erro na recepção.126 ; 2 : Flag de chegada do caracter ''127 ; 3 : Flag de chegada do caracter ''128129 ; >> Conj. de variáveis necessárias à rotina msDelay <<130 MsDelayCounter : 2 ; Var. para a rotina de tempo msDelay.131 Time_value : 1 ; Var. para a rotina de tempo msDelay.132 Counter : 1 ; Var. para contabilizar as passagens na rotina de tempo

msDelay.133 134 ; >> Conj. de variáveis com os dados<<135 Old_MoR_value : 1 ; Var. com o valor antigo do registo Mode (Speed).136 SpR_value : 1 ; Var. com o valor a escrever no registo Speed.137 Status_flag : 1 ; Conjunto de Flags de estado: 138 ; 2 - Flag de chegada de dados (Sense+Speed).139 ; 4 - Flag de leitura da velocidade do encoder.140 ; 5 - Flag de tempo de amostragem.141 ; 6 - Flag do factor tempo de amostragem.142 143 ; >> Conj. de variáveis necessárias para implementar o controlo PID <<144 Velocidade : 1 ; Var. com o valor da velocidade.145 Vel_ref : 1 ; Var. com o valor da velocidade de referência.146 Contador1_tmr2 : 1 ; Var. para controlar as passagens pela interrupção do Timer2.147 Contador2_tmr2 : 1 ; Var. para controlar as passagens pela interrupção do Timer2.148 erro_antigo : 1 ; Var. com o valor do erro anterior do sistema.149 erro_acum : 1 ; Var. com o valor do erro acumulado.150 erro_medio : 1 ; Var. com o valor do erro medio |erro_actual+erro_antigo|/2.151 erro_2 : 1 ; Var. com o valor do erro(k-2) do sistema.152 de_dt : 1 ; Var. com o valor de/dt.153 SUMLO : 1 ; Var. para guardar o valor do somatório do sistema. 154 SUMHI : 1 ; Var. para guardar o valor do somatório do sistema. 155 PID_flag : 1 ; Conjunto de Flags para o controlo PID:156 ; 0 - Flag de sinal do valor erro_actual157 ; 1 - Flag de sinal do valor erro_antigo

2

Page 185: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

158 ; 2 - Flag de sinal do valor do de/dt159 ; 3 - Flag de sinal do valor erro_acum160 ; 4 - Flag de sinal do valor erro_medio161 ; 5 - Flag indicadora de erro nulo.162 ; 6 - Flag de sinal do erro(k-2). 163 ; 7 - Flag de sinal do resultado.164 ; >> Conj. de variáveis necessárias para as operações aritméticas <<165 mulcnd : 1 ; Var. com o valor do multiplicando de 8 bits.166 mulplr : 1 ; Var. com o valor do multiplicador de 8 bits.167 H_byte : 1 ; Var. para guardar o MSB do resultado da multiplicação.168 L_byte : 1 ; Var. para guardar o LSB do resultado da multiplicação.169 count : 1 ; Var. para contabilizar as passagens na multiplicação.170 ACCaLO : 1 ; Var. com o LSB de A para a adição. 171 ACCaHI : 1 ; Var. com o MSB de A para a adição.172 ACCbLO : 1 ; Var. com o LSB de B para a adição.173 ACCbHI : 1 ; Var. com o MSB de B para a adição.174 ENDC ; Fim da zona de variáveis. 175176 ;************************************************************************************177 ; DECLARAÇÃO DE VARIÁVEIS NA ZONA COMUM *178 ;************************************************************************************179 ; Zona de 16 bytes180 ; ----------------181 CBLOCK 0x70 ; Inicio da zona de variáveis (0x70 à 0x7Fh).182 ;---------------------------------------------------------------------------183 ; Atenção:184 ; Como agora os parâmetros já não são constantes, a sua leitura na rotina 185 ; de controlo é diferente (movfw e não movlw).186 ;---------------------------------------------------------------------------187 Algoritmo : 1 ; Var. com o valor do algoritmo a aplicar.188 Kp : 1 ; Var. com o valor do termo proporcional.189 Ki : 1 ; Var. com o valor do termo intergral.190 Kd : 1 ; Var. com o valor do termo derivativo.191 MoR_value : 1 ; Var. com o valor a escrever no registo Mode (Speed).192 Vel_actual : 1 ; Var. com o valor da velocidade actual do encoder.193 erro_actual : 1 ; Var. com o valor do erro do sistema |Vref-Vreal|.194 Octeto : 1 ; Var. temporária para colocar os dados no buffer.195 W_temp : 1 ; Backup do registo W.196 STATUS_temp : 1 ; Backup do registo STATUS.197 FSR_temp : 1 ; Backup do registo FSR. 198 PCLATH_temp : 1 ; Backup do registo PCLATH (se o programa>2K).199 Temp : 1 ; Variável temporária200 ENDC ; Fim da zona de variáveis.201202 ;************************************************************************************203 ; DECLARAÇÃO DE VARIÁVEIS DO BANCO 1 *204 ;************************************************************************************205 ; Zona de 80 bytes206 ; ----------------207 CBLOCK 0xA0 ; Inicio da zona de variáveis (0xA0 à 0xEFh).208 ENDC ; Fim da zona de variáveis. 209210 ;************************************************************************************211 ; DECLARAÇÃO DE VARIÁVEIS DO BANCO 2 *212 ;************************************************************************************213 ; Zona de 96 bytes214 ; ----------------215 CBLOCK 0x110 ; Inicio da zona de variáveis (0x110 à 0x16Fh).216 bufin : RX_BUF_LEN ; Zona para o armazenamento dos dados recebidos. 217 ENDC ; Fim da zona de variáveis. 218219 ;************************************************************************************220 ; DECLARAÇÃO DE VARIÁVEIS DO BANCO 3 *221 ;************************************************************************************222 ; Zona de 96 bytes223 ; ----------------224 CBLOCK 0x190 ; Inicio da zona de variáveis (0x190 à 0x1EFh).225 bufout : TX_BUF_LEN ; Zona para o armazenamento dos dados a enviar.226 ENDC ; Fim da zona de variáveis. 227 228 ;------------------------------------------------------------------------------------229 ; ********************** VECTOR DE ARRANQUE APÓS RESET ****************************230 ;------------------------------------------------------------------------------------231 ORG 0x000 ; Endereço de partida após RESET232 clrf PCLATH ; Para seleccionar a página 0 da memória de programa.233 goto main_init ; Salto para a rotina de inicio.234235 ;////////////////////////////////////////////////////////////////////////////////////236 ; I N T E R R U P Ç Õ E S237 ;////////////////////////////////////////////////////////////////////////////////////

3

Page 186: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

238 ;************************************************************************************239 ; ROTINA DAS INTERRUPÇÕES: *240 ;************************************************************************************241 ; Se não for utilizado o endereçamento indirecto nas interrupções não é necessário 242 ;fazer backup do registo FSR.243 ; Se o programa não ocupar mais de 2K, não é necessário fazer backup do registo 244 ;PCLATH.245 ;------------------------------------------------------------------------------------246 org 0x04 ; Endereço de partida após interrupção247248 ;Backup dos registos249 ;--------------------250 backup_reg:251 movwf W_temp ; Guardar o registo w.252 swapf STATUS,w ; Swap do SATUS e passar para o w.253 movwf STATUS_temp ; Guardar o valor de w em STATUS_temp.254 movf FSR,w ; Passar o valor do FSR para o w.255 movwf FSR_temp ; Guardar o valor do w(FSR) em FSR_temp.256 movf PCLATH,w ; Passar o valor do PCLATH para o w.257 movwf PCLATH_temp ; Guardar o valor do w(PCLATH)em PCLATH_temp.258 clrf PCLATH ; Posicionamento na página de memória 0.259 BANK0 ; Aceder ao banco 0.260261 sw_tmr2: ; Interrupção TMR2:262 bsf STATUS,RP0 ; Aceder ao banco 1.263 btfss PIE1,TMR2IE ; Verificar se a interrupcção foi autorizada.264 goto sw_rusart ; Se não, testar outra interrupção.265 bcf STATUS,RP0 ; Se sim, aceder ao banco 0.266 btfss PIR1,TMR2IF ; Verifivar se a flag foi activada.267 goto sw_rusart ; Se a flag não está activada testar outra interrupção.268 call int_tmr2 ; Se sim, executar a interrupção.269 bcf PIR1,TMR2IF ; Apagar a flag de interrupção.270 goto restore_reg ; Restaurar os registos.271272 sw_rusart: ;Interrupção recepção USART:273 bsf STATUS,RP0 ; Aceder ao banco 1.274 btfss PIE1,RCIE ; Verificar se a interrupcção foi autorizada.275 goto sw_tusart ; Se não, testar outra interrupção.276 bcf STATUS,RP0 ; Se sim, aceder ao banco 0.277 btfss PIR1,RCIF ; Verifivar se a flag foi activada.278 goto sw_tusart ; Se a flag não está activada testar outra interrupção.279 call int_rusart ; Se sim, executar a interrupção.280 ; ESTA FLAG NÂO DEVE SER COLOCADA A 0. A LEITURA DO RCREG OCUPA-SE DISSO.281 goto restore_reg ; Restaurar os registos.282283 sw_tusart: ; Interrupção transmissão USART:284 bsf STATUS,RP0 ; Aceder ao banco 1.285 btfss PIE1,TXIE ; Verificar se a interrupcção foi autorizada.286 goto restore_reg ; Se não, testar outra interrupção.287 bcf STATUS,RP0 ; Se sim, aceder ao banco 0.288 btfss PIR1,TXIF ; Verifivar se a flag foi activada.289 goto restore_reg ; Se a flag não está activada testar outra interrupção.290 call int_tusart ; Se sim, executar a interrupção.291 ; ESTA FLAG NÂO DEVE SER COLOCADA A 0. A LEITURA DO TXREG OCUPA-SE DISSO.292 goto restore_reg ; Restaurar os registos.293294 ;Restauro dos registos295 ;---------------------296 restore_reg:297 movf PCLATH_temp,w ; Carrega o antigo PCLATH.298 movwf PCLATH ; Restaura o PCLATH.299 movf FSR_temp,w ; Carrega o antigo FSR. 300 movwf FSR ; Restaura o FSR.301 swapf STATUS_temp,w ; Swap do W_temp e guarda-o em w.302 movwf STATUS ; Restauro do registo STATUS.303 swapf W_temp,f ; Inversão do L e do H no antigo w, sem alterar o Z.304 swapf W_temp,w ; Reinversão do L e do H no antigo w. 305 ; w restaurado sem modificar o status.306 retfie ; Return from interrupt.307308 ; ///////////////////////////////////////////////////////////////////////////////////309 ; S U B - R O T I N A S :310 ; ///////////////////////////////////////////////////////////////////////////////////311312 ;************************************************************************************313 ; >INTERRUPÇÃO TIMER 2< *314 ;************************************************************************************315 int_tmr2316317 BANK0

4

Page 187: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

318 ; Actualizar o valor do PWM319 ; ------------------------320 movfw SpR_value ; SpR_value -> w321 movwf CCPR1L ; w -> CCPR1L322 ; Obter o valor da Velocidade real de rotação323 ; -------------------------------------------324 btfsc Status_flag,5 ; A flag de tempo de amostragem foi activada?325 goto Count_loop ; Sim então, ir para...326 bcf T1CON,TMR1ON ; Não então, parar contagem do TMR1327 bsf Status_flag,5 ; Activar a flag de tempo de amostragem.328 clrf TMR1L ; Limpar o TMR1L329 clrf TMR1H ; Limpar o TMR1H330 bsf T1CON,TMR1ON ; Iniciar a contagem do TMR1331 Count_loop332 btfsc Status_flag,6 ; A flag do factor tempo de amostragem foi activada?333 goto Count_loop1334 decfsz Contador1_tmr2335 return336 Count_loop1337 bsf Status_flag,6 ; Activar a flag do factor tempo de amostragem.338 decfsz Contador2_tmr2339 return340 bcf T1CON,TMR1ON ; Parar contagem do TMR1341 movf TMR1L,w ; TMR1L -> w342 movwf Vel_actual ; w -> Vel_actual343 movlw COMPTVAL1_tmr2 ; Reiniciar o valor do contador de passagens,344 movwf Contador1_tmr2 ; pela interrupção do TMR2.345 movlw COMPTVAL2_tmr2 ; Reiniciar o valor do contador de passagens,346 movwf Contador2_tmr2 ; pela interrupção do TMR2.347 bcf Status_flag,6 ; Reiniciar a flag do factor tempo de amostragem.348 bcf Status_flag,5 ; Reiniciar a flag de tempo de amostragem.349 bsf Status_flag,4 ; Activar a flag de leitura da velocidade do encoder.350 return ; fim da sub-rotina de interrupção TMR2351352 ;************************************************************************************353 ; >INTERRUPÇÃO RECEPÇÃO USART< *354 ;************************************************************************************355 ;-----------------------------------------------------------------------------356 ; Recebe o caracter da USART e é colocado no buffer de entrada.357 ; Se a dimensão actual do buffer for igual á máxima definida, não é armazenado 358 ; mais nenhum valor e é colocado na ultima posição posição o caracter ''.359 ; Se a recepção terminou (comprimento máximo ou '' recebido, as interrupções 360 ; de recepção são interrompidas e o apontador é redireccionado para o inicio 361 ; do buffer.362 ; Os erros são detectados e assinalados.363 ;-----------------------------------------------------------------------------364 int_rusart365 BANK0 ; Aceder ao banco 0.366367 ; Verificar se ocorreu um erro de trama368 ; -------------------------------------369 btfsc RCSTA,FERR ; Ocorreu um erro de trama?370 bsf ER_RX ; Sim, então assinalar o erro de trama.371 ; Não então continuar.372 ; Obter o octeto recebido373 ; -----------------------374 movf RCREG,w ; Carregar o octeto375 movwf Octeto ; Guardar na variável temporária.376377 ; Verificar a paridade378 ; --------------------379 movf Octeto,w ; Carregar o octeto recebido.380 call calcpar ; Calcular a paridade.381 movf RCSTA,w ; Carregar o valor recebido.382 xorwf Serial_flag,w ; Comparar a paridade recebida com a calculada.383 andlw 0x01 ; 384 btfss STATUS,Z ; b0 = b1? (Paridade calculada = paridade recebida?)385 bsf ER_RX ; Não, então assinalar o erro de paridade.386387 ; Verificar se ocorreu algum erro388 ; -------------------------------389 BANK0390 btfss ER_RX ; Ocorreu algum erro durante a recepção? 391 goto rusart_1 ; Não, então...392 goto intrcend ; Sim, então...393394 ; O caracter '' já foi recebido395 ; -------------------------------396 rusart_1397 btfss Rec_Start ; O caracter '' já foi recebido?

5

Page 188: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

398 goto rusart_2 ; Não, então...399 goto rusart_3 ; Sim, então...400401 ; Verificar se o caracter recebido é igual a ''402 ; -----------------------------------------------403 rusart_2404 movf Octeto,w ; Carregar o caracter recebido.405 xorlw '' ; Compara-lo com o caracter ''406 btfss STATUS,Z ; É igual?407 goto intrcend ; Não, então... 408 bsf Rec_Start ; Sim, então...409410 ; Guardar o octeto recebido no buffer 411 rusart_3 ; -----------------------------------412 bsf STATUS,IRP ; Aceder aos bancos 2 e 3 no modo de endereçamento indirecto.413 movf bufinptr,w ; Carregar o apontador de destino,414 movwf FSR ; no apontador de endereço.415 movf Octeto,w ; Carregar o octeto recebido.416 movwf INDF ; Guarda-lo no buffer.417418 ; Verificar se o caracter recebido é igual a ''419 ; -----------------------------------------------420 movf Octeto,w ; Carregar o caracter recebido.421 xorlw '' ; Compara-lo com o caracter ''.422 btfss STATUS,Z ; É igual?423 goto rusart_4 ; Não então,...424 bsf Rec_Stop ; Sim, então...425 goto intrcend426427 ; Verificar se o buffer está cheio428 rusart_4 ; --------------------------------429 incf bufinptr,f ; Incrementar o apontador de carateres.430 movf FSR,w ; Carregar o apontador.431 xorwf (RX_BUF_LEN +.15),W ; Comparar com a última posição possivel.432 btfss STATUS,Z ; É igual?433 return ; Não, então fim da recepção.434 incf FSR,f ; Sim, então apontar para a última posição435 movlw '' ; Carregar o caracter ''.436 movwf INDF ; Guarda-lo na última posição do buffer.437438 ; Fim da recepção439 ; ---------------440 intrcend441 BANK0442 movlw LOW bufin ; Endereço da primeira posição do buffer de entrada.443 movwf bufinptr ; O próximo caracter será o primeiro.444 return ; Fim da sub-rotina de interrupção RUSART445446 ;************************************************************************************447 ; >INTERRUPÇÃO TRANSMISSÃO USART< *448 ;************************************************************************************449 ;-----------------------------------------------------------------------------450 ; Envio do caracter apontado pelo bufoutptr, e é incrementado o apontador.451 ; Se o caracter recebido for o '' a transmissão é interrompida e é apontado 452 ; novamente o inicio do buffer.453 ;-----------------------------------------------------------------------------454 int_tusart455 ; Obter o octeto a enviar456 ; -----------------------457 bsf STATUS,IRP ; Apontar para os bancos 3 e 4 no modo endereçamento indirecto. 458 movf bufoutptr,w ; Passar o apontador de octetos459 movwf FSR ; para o apontador.460 movf INDF,w ; Carregar o octeto a enviar.461462 ; Calcular a paridade463 ; -------------------464 call calcpar ; Calcular a paridade.465 bsf STATUS,RP0 ; Aceder ao banco 1.466 bcf TXSTA,TX9D ; Definir por defeito, paridade= 0467 btfsc PARIDADE ; Paridade = 1?468 bsf TXSTA,TX9D ; Sim, então definir a paridade= 1.469 ; Não, então manter a paridade= 0. 470 ; Envio do octeto471 ; ---------------472 movf INDF,w ; Carregar o octeto a enviar.473 bcf STATUS,RP0 ; Aceder ao banco 0.474 movwf TXREG ; Enviar o octeto + paridade.475 incf bufoutptr,f ; Apontar para o octeto seguinte.476477 ; Verificar se se trata do último octeto

6

Page 189: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

478 ; --------------------------------------479 xorlw '' ; Comparar o octeto enviado com o caracter ''.480 btfss STATUS,Z ; É igual?481 return ; Não, então sair da interrupção.482 ; Sim, então tratar do fim da emissão.483 ; Fim da transmissão484 ; ------------------485 bsf STATUS,RP0 ; Aceder ao banco 1.486 bcf PIE1,TXIE ; Fim das interrupções de emissão USART.487 bcf STATUS,RP0 ; Voltar ao banco 0.488 movlw LOW bufout ; Endereço da primeira posição do buffer de saída.489 movwf bufoutptr ; O próximo caracter será primeiro.490 return ; Fim da sub-rotina de interrupção TUSART491492 ;************************************************************************************493 ; CALCULO DA PARIDADE *494 ;************************************************************************************495 calcpar496 movwf Temp ; Guardar na variável(temporária)497 bcf PARIDADE ; Definir a paridade como sendo par.498 calcparl499 andlw 0x01 ; Testar o bit 0 do octeto recebido.500 xorwf Serial_flag,f ; Se " 1 ", inverter a polaridade.501 bcf STATUS,C ; Limpar o carry para deslocamento.502 rrf Temp,f ; Deslocar o bit seguinte para a posição 0.503 movf Temp,w ; Carregar o que resta do octeto.504 btfss STATUS,Z ; Ainda possui bits a " 1 "?505 goto calcparl ; Sim, então continuar.506 return ; Não, então sair.507508 ;************************************************************************************509 ; OBTER OS DADOS RECEBIDOS *510 ;************************************************************************************511 ReceiveSerial512 bsf STATUS,IRP ; Apontar para os bancos 3 e 4 no modo endereçamento indirecto. 513 movf bufinptr,w ; Passar o apontador de octetos514 movwf FSR ; para o apontador.515 GetData_1516 movf INDF,w ; Carregar o octeto.517 xorlw '' ; Compara-lo com o caracter ''518 btfsc STATUS,Z ; É igual?519 goto GetData_2 ; Sim, então...520 incf FSR,f ; Não, então incrementar o apontador.521 goto GetData_1 ;522 GetData_2523 incf FSR,f ; Incrementar o apontador.524 movf INDF,w ; Carregar o octeto.525 movwf Algoritmo526 incf FSR,f ; Incrementar o apontador.527 movf INDF,w ; Carregar o octeto.528 movwf Kp529 incf FSR,f ; Incrementar o apontador.530 movf INDF,w ; Carregar o octeto.531 movwf Ki532 incf FSR,f ; Incrementar o apontador.533 movf INDF,w ; Carregar o octeto.534 movwf Kd535 incf FSR,f ; Incrementar o apontador.536 movf INDF,w ; Carregar o octeto.537 movwf MoR_value538 BANK0539 bsf Status_flag,2 ; Activar a flag de chegada de dados (Parâmetros+Speed)540 bcf Rec_Start541 bcf Rec_Stop542 movlw LOW bufin ; Endereço da primeira posição do buffer de entrada.543 movwf bufinptr ; O próximo caracter será o primeiro.544 return545 ;************************************************************************************546 ; TRANSMITIR OS DADOS PARA O PC *547 ;************************************************************************************548 TransmitSerial549550 ; Transmissão para o PC551 ; ----------------------552 BANKSEL bufout ; Aceder ao banco 3553 movlw ""554 movwf bufout555 movfw Vel_actual556 movwf bufout+1557 movlw "|"

7

Page 190: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

558 movwf bufout+2559 movfw erro_actual560 movwf bufout+3561 movlw ""562 movwf bufout+4563564 ; Proceder ao envio da mensagem565 ; ------------------------------566 BANK1567 bsf TXSTA,TXEN ; Activar a interrupção.568 bsf PIE1,TXIE ;569570 ; Aguardar o fim da emissão571 ; -------------------------572 clrwdt573 btfsc PIE1,TXIE ; Ainda existem caracteres para enviar?574 goto $-2 ; Sim, então aguardar.575 btfss TXSTA,TRMT ; O buffer de saída está vazio?576 goto $-4 ; Não, então aguardar.577 BANK0578 return579580 ;************************************************************************************581 ; FUNÇÃO PARA VERIFICAR SE O VALOR RECEBIDO É NOVO *582 ;************************************************************************************583 Test_value584 BANK0585 movfw MoR_value ; MoR_value -> w.586 xorwf Old_MoR_value,w ; (w)xor(f)-> w.587 btfss STATUS,Z ; O valor lido é diferente?588 call Det_valor ; Sim, então chamar a função Det_valor589 return ; Não, então sair.590 ;************************************************************************************591 ; FUNÇÃO PARA DETERMINAR O VALOR A APLICAR *592 ;************************************************************************************593 Det_valor594 ; Determinar o valor aplicar595 ; ---------------------------596 movfw MoR_value ; MoR_value -> w.597 movwf Old_MoR_value ; Actualizar o valor antigo.598 movwf Velocidade ; w -> Velocidade599 call Sentido_directo ; Chamar a função Sentido directo600 bcf Status_flag,2 ; Reiniciar a flag de chegada de dados (Sense+Speed).601 clrf erro_acum ; Limpar o erro acumulado.602 clrf erro_antigo ; Limpar o valor da variável erro_antigo.603 clrf PID_flag ; Limpar as flags de controlo.604 return605606 ;************************************************************************************607 ; FUNÇÃO SENTIDO DIRECTO *608 ;************************************************************************************609 Sentido_directo610 movfw Velocidade611 movwf Vel_ref ; Actualizar a velocidade de referência.612 movwf SpR_value ; Speed (0-127). 613 return614615 ;************************************************************************************616 ; FUNÇÃO PARA IMPLEMENTAR O CONTROLO PID DA VELOCIDADE *617 ;************************************************************************************618 Controlo619 clrwdt ; Limpar o Watchdog Timer620 bcf PID_flag,5 ; Inicializar a flag de erro nulo.621 movfw Algoritmo ; Algoritmo -> w.622 xorlw 0x01623 btfsc STATUS,Z ; O valor lido é igual a 0x01?624 goto Algoritmo_1 ; Sim, então ir para...625 movfw Algoritmo ; Não então, Algoritmo -> w.626 xorlw 0x02627 btfsc STATUS,Z ; O valor lido é igual a 0x02?628 goto Algoritmo_2 ; Sim, então ir para...629 movfw Algoritmo ; Não então, Algoritmo -> w.630 xorlw 0x03631 btfsc STATUS,Z ; O valor lido é igual a 0x03?632 goto Algoritmo_3 ; Sim, então ir para...633 movfw Algoritmo ; Não então, Algoritmo -> w.634 xorlw 0x04635 btfsc STATUS,Z ; O valor lido é igual a 0x04?636 goto Algoritmo_4 ; Sim, então ir para...637 movfw Algoritmo ; Não então, Algoritmo -> w.

8

Page 191: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

638 bcf Status_flag,4 ; Reiniciar a flag de leitura da velocidade do encoder.639 return640641 ;************************************************************************************642 ; FUNÇÃO PARA IMPLEMENTAR O ALGORITMO DE CONTROLO 1 *643 ;************************************************************************************644 ; Partindo da expressão simplificada:645 ; u(k)=p(k)+i(k)+d(k) onde p(k) é o termo proporcional, i(k) é o termo integral e 646 ; d(k) é o termo derivativo. 647 ; p(k)= (Kp × erro_actual)648 ; i(k)= ((Ki × erro_actual) + erro_acum))649 ; d(k)= (Kd × (erro_actual - erro_antigo))650 ;------------------------------------------------------------------------------------651 Algoritmo_1652 clrf SUMHI ; Iniciarlizar MSB do somatório.653 clrf SUMLO ; Iniciarlizar LSB do somatório.654 call C_ERROR ; Calcular o erro.655 btfsc PID_flag,5 ; O erro actual do sitema é nulo?656 return ; Sim, então sair.657 call C_PROP ; Calcular o termo proporcional.658 call C_INT ; Calcular o termo integral.659 call C_DIFF ; Calcular o termo diferencial.660 goto L_SUMM661662 ;************************************************************************************663 ; FUNÇÃO PARA IMPLEMENTAR O ALGORITMO DE CONTROLO 2 *664 ;************************************************************************************665 ; Partindo da expressão simplificada:666 ; u(k)=p(k)+i(k)+d(k) onde p(k) é o termo proporcional, i(k) é o termo integral e 667 ; d(k) é o termo derivativo. 668 ; p(k)= Kp × erro_actual669 ; i(k)= Ki (((erro_actual + erro_antigo)/2) + erro_acum) 670 ; d(k)= Kd × (erro_actual - erro_antigo)671 ;------------------------------------------------------------------------------------672 Algoritmo_2673 clrf SUMHI ; Iniciarlizar MSB do somatório.674 clrf SUMLO ; Iniciarlizar LSB do somatório.675 call C_ERROR ; Calcular o erro.676 btfsc PID_flag,5 ; O erro actual do sitema é nulo?677 return ; Sim, então sair.678 call C_PROP ; Calcular o termo proporcional.679 call C_INT_1 ; Calcular o termo integral_1.680 call C_DIFF ; Calcular o termo diferencial.681 goto L_SUMM682683 ;************************************************************************************684 ; FUNÇÃO PARA IMPLEMENTAR O ALGORITMO DE CONTROLO 3 *685 ;************************************************************************************686 ; Partindo da expressão simplificada:687 ; u(k)=p(k)+i(k)+d(k) onde p(k) é o termo proporcional, i(k) é o termo integral e 688 ; d(k) é o termo derivativo. 689 ; p(k)= Kp × erro_actual690 ; i(k)= SUM(Ki) 691 ; d(k)= Kd × (erro_actual - erro_antigo)692 ;------------------------------------------------------------------------------------693 Algoritmo_3694 clrf SUMHI ; Iniciarlizar MSB do somatório.695 clrf SUMLO ; Iniciarlizar LSB do somatório.696 call C_ERROR ; Calcular o erro.697 btfsc PID_flag,5 ; O erro actual do sitema é nulo?698 return ; Sim, então sair.699 call C_PROP ; Calcular o termo proporcional.700 call C_INT_2 ; Calcular o termo integral_2.701 call C_DIFF ; Calcular o termo diferencial.702 goto L_SUMM703704 ;************************************************************************************705 ; FUNÇÃO PARA IMPLEMENTAR O ALGORITMO DE CONTROLO 4 *706 ;************************************************************************************707 ; u(k)= Kp×[erro_actual-erro_antigo] + Ki×erro_actual + 708 ; + Kd×[erro_actual - 2×erro_antigo + erro_antigo_2] + u(k-1) onde p(k) é o termo 709 ; proporcional, i(k) é o termo integral e d(k) é o termo derivativo.710 ; p(k)= Kp×[erro_actual-erro_antigo]711 ; i(k)= Ki×erro_actual 712 ; d(k)= Kd×[erro_actual - 2×erro_antigo + erro_antigo_2] + u(k-1)713 ;------------------------------------------------------------------------------------714 Algoritmo_4715 call C_ERROR ; Calcular o erro.716 btfsc PID_flag,5 ; O erro actual do sitema é nulo?717 return ; Sim, então sair.

9

Page 192: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

718 call C_PROP_1 ; Calcular o termo proporcional.719 call C_INT_3 ; Calcular o termo integral_2.720 call C_DIFF_1 ; Calcular o termo diferencial.721 goto L_SUMM722723 ; Cálculo do erro do sistema: 724 ; ------------------------------------------------------------------------725 ; NOTA: O valor do erro do sistema obtem-se calculando a diferença entre o 726 ; valor de referência e o valor no instante k ou valor actual.727 ; erro_actual=(Vel_ref - Vel_actual) 728 ; ------------------------------------------------------------------------729 C_ERROR730 movfw Vel_actual ; Vel_actual -> w 731 subwf Vel_ref,w ; Vel_ref - w -> w732 btfss STATUS,C ; O erro é positivo?733 goto MNS_ER ; Não, então ir para "MNS_ER".734 PLS_ER ; Sim, então executar "PLS_ER".735 movwf erro_actual ; Passar o resultado para a variável erro_actual.736737 ; Verificar se o valor do erro_actual é igual a zero738 ; --------------------------------------------------739 movfw erro_actual740 btfsc STATUS,Z ; erro_actual = 0?741 bsf PID_flag,5 ; Sim, então activar a flag de erro nulo.742 btfsc STATUS,Z ; erro_actual = 0?743 goto ERROR_BKP ; Sim, então ir para "ERROR_BKP".744 bcf PID_flag,0 ; Não, então activar a flag indicadora de erro 745 goto CE_EXIT ; positivo e aplicar o controlo.746 MNS_ER747 movfw Vel_ref ; Vel_ref -> w748 subwf Vel_actual,w749 movwf erro_actual750 bsf PID_flag,0 ; Activar a flag indicadora de erro negativo.751 CE_EXIT752 return753754 ; Cálculo do termo proporcional: 755 ; ------------------------------------------------------------------------756 ; NOTA: O termo proporcional obtem-se através do produto do ganho do 757 ; termo proporcional pelo erro do sistema (Kp × erro_actual). Este termo 758 ; está limitado entre +/-100. Quanto maior for o ganho proporcional menor 759 ; será o tempo de subida do sistema, mas em contrapartida, maiores terão 760 ; que ser os ganhos integral e derivativo de modo a tornar o sistema 761 ; estável.762 ; p(t)= Kp × erro_actual763 ; ------------------------------------------------------------------------ 764 C_PROP765 movfw erro_actual ; erro_actual -> w 766 movwf mulcnd 767 movfw Kp768 movwf mulplr769 call mpy8x8_S ; Multiplicar Kp x erro_actual.770 call LMT100 ; Limitar o valor entre 0 e 100.771 RESTORE_SGN772 btfss PID_flag,0 ; O erro calculado é positivo?773 goto ADDPROP ; Sim, então ir para...774 comf L_byte,f ; Não, então cálcular o complemento 775 incf L_byte,f ; para 2 do L_byte.776777 ; Adicionar o valor do termo proporcional ao somatório 778 ; ----------------------------------------------------779 ADDPROP780 movfw L_byte ; Adicionar o valor do ganho proporcional781 addwf SUMLO,f ; ao somatório.782 btfsc STATUS,C ; Foi gerado um "CARRY-OUT"?783 incf SUMHI,f ; Sim, então...784 movlw 0x00 ; Não, então...785 btfsc SUMLO,7 ; O MSbit de SUMLO é 1?786 movlw 0xFF ; Sim, então 0xFF -> w787 addwf SUMHI,f ; SUMHI + w -> SUMHI788 CP_EXIT789 return790791 ; Cálculo do termo proporcional_1: 792 ; ------------------------------------------------------------------------793 ; p(t)=( Kp×[erro_actual-erro_antigo])794 ; ------------------------------------------------------------------------ 795 C_PROP_1796 movfw erro_actual ; Passar o valor do erro_actual para o registo w. 797 btfss PID_flag,0 ; O valor do erro_actual é positivo?

10

Page 193: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

798 goto LO_BYTE_P ; Sim, então ir para... 799 comf erro_actual,f ; Não, então cálcular o complemento para 2 800 incf erro_actual,w ; desse valor.801 comf erro_actual,f ; Restaurar o valor do erro_actual. 802 LO_BYTE_P803 movwf ACCbLO ; Para subtração804 movlw 0x00805 btfsc PID_flag,0 ; Passar o sinal para o Byte mais significativo.806 movlw 0xFF807 movwf ACCbHI808 movfw erro_antigo ; Passar o valor do erro_antigo para o registo w. 809 btfss PID_flag,1 ; O valor do erro_antigo é positivo?810 goto LO_BYTEO_P ; Sim, então ir para... 811 comf erro_antigo,f ; Não, então cálcular o complemento para 2 812 incf erro_antigo,w ; desse valor.813 comf erro_antigo,f ; Restaurar o valor do erro_antigo. 814 LO_BYTEO_P815 movwf ACCaLO ; Para subtração816 movlw 0x00817 btfsc PID_flag,1 ; Passar o sinal para o Byte mais significativo.818 movlw 0xFF819 movwf ACCaHI820 call D_sub ; erro_actual - erro_antigo821 STRIP_SGN1822 btfsc ACCbHI,7 ; O sinal do resultado é positivo?823 goto NEG_ABS1 ; Não, então ir para...824 goto POS_ABS1 ; Sim, então ir para... 825 NEG_ABS1826 bsf PID_flag,2 ; O resultado é negativo, então colocar a flag a 1 e827 comf ACCbLO,f ; cálcular o complemento para 2 do resultado.828 incf ACCbLO,w829 movwf de_dt 830 goto MULT_Kp831 POS_ABS1832 bcf PID_flag,2 ; O resultado é positivo, então colocar a flag a 0 e833 movfw ACCbLO ; guardar o resultado.834 movwf de_dt835836 ; Multiplicar o resultado por Kp837 ; ------------------------------838 MULT_Kp839 movfw de_dt ; Passar o valor do de/dt para o multiplicando.840 movwf mulcnd ; 841 movfw Kp ; Passar o valor do Kp para o multiplicador.842 movwf mulplr ; 843 call mpy8x8_S ; Multiplicar (de_dt) x Kp844 call LMT100 ; Limitar o valor entre 0 e 100.845 RE_SGN1846 ;---------847 movfw L_byte848 btfsc STATUS,Z ; O termo derivativo é nulo?849 goto CP1_EXIT ; Sim, então ir para...850 ;---------851 btfss PID_flag,2 ; O de_dt é positivo?852 goto ADDPROP1 ; Sim, então ir para...853 comf L_byte,f ; Não, então cálcular o complemento 854 incf L_byte,f ; para 2 do L_byte.855856 ; Adicionar o termo proporcional ao somatório 857 ; -------------------------------------------858 ADDPROP1859 movlw 0x00860 btfsc PID_flag,2 ; O sinal do valor de_dt é positivo? 861 movlw 0xFF ; Não, então aplicar o sinal negativo ao MSB.862 movwf ACCbHI ; Sim, então aplicar o sinal positivo ao MSB.863 movfw L_byte ; Passar o valor de L_byte -> w. 864 movwf ACCbLO ; w -> ACCbLO865 movfw SUMLO ; Passar o valor actual do SUMLO -> w.866 movwf ACCaLO ; w -> ACCaLO. 867 movfw SUMHI ; Passar o valor actual do SUMHI -> w.868 movwf ACCaHI ; w -> ACCaHI.869 call D_add ; Chamar a função de adição.870 movfw ACCbLO ; Guardar os valores resultantes em871 movwf SUMLO ; SUMLO e SUMHI respectivamente.872 movfw ACCbHI873 movwf SUMHI874 CP1_EXIT875 return876877 ; Cálcular o termo integral:

11

Page 194: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

878 ; ------------------------------------------------------------------------879 ; NOTA: O termo integral advém do valor do erro acumulado durante o 880 ; processo. Por mais pequeno que seja o erro se este persistir durante 881 ; algum tempo irá originar um valor considerável no acumulador, de modo a 882 ; actuar o sistema. O valor do termo integral pode ser obtido através do 883 ; produto do Ki pelo somatório do erro (Ki × erro_acum). Tal como no 884 ; termo proporcional o termo integral também está limitado para +/-100.885 ; i(k)= (Ki × erro_actual) + erro_acum886 ; ------------------------------------------------------------------------ 887 C_INT888 btfss PID_flag,3 ; O erro acumulado é positivo?889 goto ACUM_P ; Sim, então ir para...890 ACUM_N ; Não, então...891 btfsc PID_flag,0 ; Verificar o sinal do valor do erro_actual.892 goto MNS_0 ; É negativo, então ir para...893 PLS_0 ; É positivo, então...894 ; erro_actual positivo e erro_acum negativo:895 ; -----------------------------------------896 movfw erro_actual ; erro_actual -> w 897 movwf mulcnd 898 movfw Ki899 movwf mulplr900 call mpy8x8_S ; Multiplicar Ki x erro_actual.901 call LMT100 ; Limitar o valor entre 0 e 100.902 movfw L_byte ; L_byte -> w903 comf erro_acum,f ; Cálcular o complemento para 2 do 904 incf erro_acum,f ; erro_acum.905 movfw L_byte ; L_byte -> w906 addwf erro_acum,f ; erro_acum= erro_acum + (Ki x erro_actual) 907 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.908 bcf PID_flag,3 ; É positivo, então definir o sinal.909 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.910 goto SIGN_TI ; É positivo, então...911 bsf PID_flag,3 ; É negativo, então definir o sinal.912 comf erro_acum,f ; Cálcular o complemento para 2 913 incf erro_acum,f ; do erro_acum.914 goto SIGN_TI ; Aplicar o sinal no termo integral.915 MNS_0 916 ; erro_actual negativo e erro_acum negativo:917 ; -----------------------------------------918 bsf PID_flag,3 ; Definir o erro_acum como sendo negativo.919 movfw erro_actual ; erro_actual -> w 920 movwf mulcnd 921 movfw Ki922 movwf mulplr923 call mpy8x8_S ; Multiplicar Ki x erro_actual.924 call LMT100 ; Limitar o valor entre 0 e 100.925 movfw L_byte ; L_byte -> w926 addwf erro_acum,f ; erro_acum= |erro_acum|+(Ki × |erro_actual|)927 goto SIGN_TI ; Aplicar o sinal no termo integral.928 ACUM_P929 btfsc PID_flag,0 ; Verificar o sinal do valor do erro_actual.930 goto MNS_1 ; É negativo, então ir para...931 PLS_1 ; É positivo, então...932 ; erro_actual positivo e erro_acum positivo:933 ; -----------------------------------------934 bcf PID_flag,3 ; Definir o erro_acum como sendo positivo.935 movfw erro_actual936 movfw erro_actual ; erro_actual -> w 937 movwf mulcnd 938 movfw Ki939 movwf mulplr940 call mpy8x8_S ; Multiplicar Ki x erro_actual.941 call LMT100 ; Limitar o valor entre 0 e 100.942 movfw L_byte ; L_byte -> w943 addwf erro_acum,f ; erro_acum= |erro_acum|+(Ki × |erro_actual|)944 goto SIGN_TI ; Aplicar o sinal no termo integral.945 MNS_1 946 ; erro_actual negativo e erro_acum positivo:947 ; ----------------------------------------- 948 movfw erro_actual ; erro_actual -> w 949 movwf mulcnd 950 movfw Ki951 movwf mulplr952 call mpy8x8_S ; Multiplicar Ki x erro_actual.953 call LMT100 ; Limitar o valor entre 0 e 100.954 movfw L_byte ; L_byte -> w955 comf L_byte,f ; Cálcular o complemento para 2 do 956 incf L_byte,f ; L_byte.957 movfw L_byte ; L_byte -> w

12

Page 195: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

958 addwf erro_acum,f ; erro_acum= erro_acum + (-Ki x erro_actual) 959 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.960 bcf PID_flag,3 ; É positivo, então definir o sinal.961 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.962 goto SIGN_TI ; É positivo, então...963 bsf PID_flag,3 ; É negativo, então definir o sinal.964 comf erro_acum,f ; Cálcular o complemento para 2 965 incf erro_acum,f ; do erro_acum.966 SIGN_TI967 movfw erro_acum ; |erro_acum| -> w968 movwf L_byte ; w -> L_byte969 call LMT100 ; Limitar o valor entre 0 e 100.970 movfw L_byte ; L_byte - > w971 movwf erro_acum ; w -> erro_acum972 btfsc PID_flag,3 ; O sinal do acumulador de erro é positivo?973 goto TI_N ; Não, então ir para ...974 TI_P ; Sim, então...975 goto ADDINT976 TI_N977 comf L_byte,f ; Cálcular o complemento para 2 978 incf L_byte,f ; desse valor.979980 ; Adicionar o valor do termo integral ao somatório 981 ; ------------------------------------------------982 ADDINT983 movfw L_byte ; L_byte -> w984 addwf SUMLO,f ; SUMLO= SUMLO + w 985 btfsc STATUS,C ; Foi gerado um "CARRY-OUT"?986 incf SUMHI,f ; Sim, então...987 movlw 0x00 ; Não, então...988 btfsc PID_flag,3 ; O erro_acum é negativo?989 movlw 0xFF ; Sim, então 0xFF -> w990 addwf SUMHI,f ; SUMHI + w -> SUMHI 991 CI_EXIT992 return993 994 ; Cálcular o termo integral_1: 995 ; ------------------------------------------------------------------------996 ; NOTA: O termo integral advém do valor do erro acumulado durante o 997 ; processo. Por mais pequeno que seja o erro se este persistir durante 998 ; algum tempo irá originar um valor considerável no acumulador, de modo a 999 ; actuar o sistema. Neste caso o termo integral advém do produto do KI 1000 ; pelo somatório do erro médio acumulado. Tal como no termo proporcional o 1001 ; termo integral também está limitado para +/-100.1002 ; i(k)= (Ki ((erro_actual + erro_antigo)/2) + erro_acum) 1003 ; ------------------------------------------------------------------------ 1004 C_INT_11005 btfsc PID_flag,1 ; Verificar o sinal do valor do erro_antigo.1006 goto erro_antigo_N ; É negativo, então ir para...1007 erro_antigo_P1008 btfsc PID_flag,0 ; Verificar o sinal do valor do erro_actual.1009 goto erro_actual_N ; É negativo, então ir para... 1010 erro_actual_P1011 ; Erro antigo positivo e erro actual positivo1012 ; -------------------------------------------1013 bcf PID_flag,4 ; Definir o sinal do erro_medio positivo.1014 movfw erro_actual ; É positivo, então: 1015 movwf L_byte ; erro_actual -> L_byte1016 movfw erro_antigo ; erro_antigo -> w1017 addwf L_byte,f ; L_byte= (erro_actual + erro_antigo) 1018 call LMT100 ; Limitar o valor entre 0 e 100.1019 goto ACUM_SIGN1020 erro_actual_N1021 ; Erro antigo positivo e erro actual negativo1022 ; -------------------------------------------1023 movfw erro_antigo ; erro_antigo -> w1024 movwf L_byte ; w -> L_byte1025 comf erro_actual,f ; Não, então cálcular o complemento para 2 1026 incf erro_actual,w ; desse valor.1027 comf erro_actual,f ; Restaurar o valor do erro_actual. 1028 addwf L_byte,f ; L_byte= (erro_antigo + erro_actual)1029 btfss L_byte,7 ; Verificar o sinal do resultado.1030 bcf PID_flag,4 ; É positivo, então definir o sinal.1031 btfss L_byte,7 ; Verificar o sinal do resultado.1032 goto ACUM_SIGN ; É positivo, então...1033 bsf PID_flag,4 ; É negativo, então definir o sinal.1034 comf L_byte,f ; Cálcular o complemento para 2 1035 incf L_byte,f ; do L_byte.1036 goto ACUM_SIGN1037 erro_antigo_N

13

Page 196: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1038 btfsc PID_flag,0 ; Verificar o sinal do valor do erro_actual.1039 goto erro_actual_N1 ; É negativo, então ir para...1040 erro_actual_P11041 ; Erro antigo negativo e erro actual positivo1042 ; -------------------------------------------1043 movfw erro_actual ; erro_actual -> w1044 movwf L_byte ; w -> L_byte1045 comf erro_antigo,f ; Não, então cálcular o complemento para 2 1046 incf erro_antigo,w ; desse valor.1047 comf erro_antigo,f ; Restaurar o valor do erro_actual. 1048 addwf L_byte,f ; L_byte= (erro_actual + erro_antigo)1049 btfss L_byte,7 ; Verificar o sinal do resultado.1050 bcf PID_flag,4 ; É positivo, então definir o sinal.1051 btfss L_byte,7 ; Verificar o sinal do resultado.1052 goto ACUM_SIGN ; É positivo, então...1053 bsf PID_flag,4 ; É negativo, então definir o sinal. 1054 comf L_byte,f ; Cálcular o complemento para 2 1055 incf L_byte,f ; do L_byte.1056 goto ACUM_SIGN1057 erro_actual_N11058 ; Erro antigo negativo e erro actual negativo1059 ; -------------------------------------------1060 bsf PID_flag,4 ; Definir o sinal do erro_médio negativo.1061 movfw erro_actual ; É positivo, então: 1062 movwf L_byte ; erro_actual -> L_byte1063 movfw erro_antigo ; erro_antigo -> w1064 addwf L_byte,f ; L_byte= (erro_actual + erro_antigo) 1065 call LMT100 ; Limitar o valor entre 0 e 100.1066 ACUM_SIGN1067 SHIFT ; Dividir o |L_byte| por 2.1068 movfw L_byte ; |L_byte|/2 -> w1069 movwf erro_medio ; w -> erro_medio1070 btfss PID_flag,3 ; O erro acumulado é positivo?1071 goto ACUM_P_1 ; Sim, então ir para...1072 ACUM_N_1 ; Não, então...1073 btfsc PID_flag,4 ; Verificar o sinal do valor do erro_medio1074 goto MNS_0_1 ; É negativo, então ir para...1075 PLS_0_1 ; É positivo, então...1076 ; erro_medio positivo e erro_acum negativo:1077 ; -----------------------------------------1078 movfw erro_medio ; erro_medio -> w 1079 movwf mulcnd 1080 movfw Ki1081 movwf mulplr1082 call mpy8x8_S ; Multiplicar Ki x erro_medio.1083 call LMT100 ; Limitar o valor entre 0 e 100.1084 movfw L_byte ; L_byte -> w1085 comf erro_acum,f ; Cálcular o complemento para 2 do 1086 incf erro_acum,f ; erro_acum.1087 movfw L_byte ; L_byte -> w1088 addwf erro_acum,f ; erro_acum= erro_acum + (Ki x erro_medio) 1089 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.1090 bcf PID_flag,3 ; É positivo, então definir o sinal.1091 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.1092 goto SIGN_TI_1 ; É positivo, então...1093 bsf PID_flag,3 ; É negativo, então definir o sinal.1094 comf erro_acum,f ; Cálcular o complemento para 2 1095 incf erro_acum,f ; do erro_acum.1096 goto SIGN_TI_1 ; Aplicar o sinal no termo integral.1097 MNS_0_1 1098 ; erro_medio negativo e erro_acum negativo:1099 ; -----------------------------------------1100 bsf PID_flag,3 ; Definir o erro_acum como sendo negativo.1101 movfw erro_medio ; erro_medio -> w 1102 movwf mulcnd 1103 movfw Ki1104 movwf mulplr1105 call mpy8x8_S ; Multiplicar Ki x erro_medio.1106 call LMT100 ; Limitar o valor entre 0 e 100.1107 movfw L_byte ; L_byte -> w1108 addwf erro_acum,f ; erro_acum= |erro_acum|+(Ki × |erro_medio|)1109 goto SIGN_TI_1 ; Aplicar o sinal no termo integral.1110 ACUM_P_11111 btfsc PID_flag,4 ; Verificar o sinal do valor do erro_medio.1112 goto MNS_1_1 ; É negativo, então ir para...1113 PLS_1_1 ; É positivo, então...1114 ; erro_medio positivo e erro_acum positivo:1115 ; -----------------------------------------1116 bcf PID_flag,3 ; Definir o erro_acum como sendo positivo.1117 movfw erro_medio ; erro_medio -> w

14

Page 197: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1118 movwf mulcnd 1119 movfw Ki1120 movwf mulplr1121 call mpy8x8_S ; Multiplicar Ki x erro_medio.1122 call LMT100 ; Limitar o valor entre 0 e 100.1123 movfw L_byte ; L_byte -> w1124 addwf erro_acum,f ; erro_acum= |erro_acum|+(Ki × |erro_medio|)1125 goto SIGN_TI_1 ; Aplicar o sinal no termo integral.1126 MNS_1_1 1127 ; erro_medio negativo e erro_acum positivo:1128 ; ----------------------------------------- 1129 movfw erro_medio ; erro_medio -> w 1130 movwf mulcnd 1131 movfw Ki1132 movwf mulplr1133 call mpy8x8_S ; Multiplicar Ki x erro_medio.1134 call LMT100 ; Limitar o valor entre 0 e 100.1135 movfw L_byte ; L_byte -> w1136 comf L_byte,f ; Cálcular o complemento para 2 do 1137 incf L_byte,f ; L_byte.1138 movfw L_byte ; L_byte -> w1139 addwf erro_acum,f ; erro_acum= erro_acum + (-Ki x erro_medio) 1140 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.1141 bcf PID_flag,3 ; É positivo, então definir o sinal.1142 btfss erro_acum,7 ; Verificar o sinal do acumulador de erro.1143 goto SIGN_TI_1 ; É positivo, então...1144 bsf PID_flag,3 ; É negativo, então definir o sinal.1145 comf erro_acum,f ; Cálcular o complemento para 2 1146 incf erro_acum,f ; do erro_acum.1147 SIGN_TI_11148 movfw erro_acum ; |erro_acum| -> w1149 movwf L_byte ; w -> L_byte1150 call LMT100 ; Limitar o valor entre 0 e 100.1151 movfw L_byte ; L_byte - > w1152 movwf erro_acum ; w -> erro_acum1153 btfsc PID_flag,3 ; O sinal do acumulador de erro é positivo?1154 goto TI_N_1 ; Não, então ir para ...1155 TI_P_1 ; Sim, então...1156 goto ADDINT_11157 TI_N_11158 comf L_byte,f ; Cálcular o complemento para 2 1159 incf L_byte,f ; desse valor.11601161 ; Adicionar o valor do termo integral ao somatório 1162 ; ------------------------------------------------1163 ADDINT_11164 movfw L_byte ; L_byte -> w1165 addwf SUMLO,f ; SUMLO= SUMLO + w 1166 btfsc STATUS,C ; Foi gerado um "CARRY-OUT"?1167 incf SUMHI,f ; Sim, então...1168 movlw 0x00 ; Não, então...1169 btfsc PID_flag,3 ; O erro_acum é negativo?1170 movlw 0xFF ; Sim, então 0xFF -> w1171 addwf SUMHI,f ; SUMHI + w -> SUMHI 1172 CI_EXIT_11173 return11741175 ; Cálcular o termo integral_2: 1176 ; ------------------------------------------------------------------------1177 ; NOTA: O termo integral advém do valor do erro acumulado durante o 1178 ; processo. Sempre que existe erro no sistema, é adicionado (erro_actual>0)1179 ; ou subtraido (erro_actual<0) um pequeno valor ao acumulador de erro do 1180 ; sistema, em cada passagem do ciclo do programa. Por mais pequeno que seja 1181 ; o erro se este persistir durante algum tempo irá originar um valor 1182 ; considerável no acumulador, de modo a actuar o sistema. O valor do termo 1183 ; integral é obtido através do produto do Ki pelo integral do erro ao longo 1184 ; do tempo (Ki × erro_acumulado). Tal como no termo proporcional o termo 1185 ; integral também está limitado para +/-100.1186 ; i(t)= (SUM(Ki))1187 ; ------------------------------------------------------------------------ 1188 C_INT_21189 btfsc PID_flag,0 ; Verificar o sinal do valor do erro.1190 goto MNS_2 ; É negativo, então ir para...1191 PLS_2 ; É positivo, então...1192 movfw Ki ; Adicionar o Ki ao acumulador1193 addwf erro_acum,f ; 1194 goto LMTACM ; Limitar o valor do acumulador para +/-1001195 MNS_2 1196 movfw Ki ; Se o erro é negativo subtrair o Ki,1197 subwf erro_acum,f ; ao acumulador de erro.

15

Page 198: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1198 LMTACM1199 btfsc erro_acum,7 ; Verificar a polaridade do acumulador de erro,1200 goto M_LMT ; e limitar esse mesmo valor.1201 P_LMT1202 movlw .156 ; Para o limite positivo adicionar 156 ao valor1203 addwf erro_acum,w ; do acumulador e verificar se foi gerado um "CARRY-OUT".1204 btfss STATUS,C ; Foi gerado um "CARRY-OUT"?1205 goto ADDINT_2 ; Não, então ir para ...1206 movlw .100 ; Sim, então forçar o valor do acumulador 1207 movwf erro_acum ; para 100 em décimal.1208 goto ADDINT_21209 M_LMT1210 movlw .156 ; Para o limite negativo subtrair 156 ao valor do1211 subwf erro_acum,w ; acumulador e verificar se não foi gerado um "CARRY-OUT".1212 btfsc STATUS,C ; Foi gerado um "CARRY-OUT"?1213 goto ADDINT_2 ; Sim, então não alterar o acumulador de erro.1214 movlw .156 ; Não, então limitar o valor do acunulador 1215 movwf erro_acum ; para -100 em décimal. 12161217 ; Adicionar o valor do termo integral ao somatório 1218 ; ------------------------------------------------1219 ADDINT_21220 movfw erro_acum ; Adicionar o valor do termo integral 1221 addwf SUMLO,f ; ao somatório.1222 btfsc STATUS,C ; Foi gerado um "CARRY-OUT"?1223 incf SUMHI,f ; Sim, então...1224 movlw 0x00 ; Não, então...1225 btfsc erro_acum,7 ; O MSbit de erro_acum é 1?1226 movlw 0xFF ; Sim, então 0xFF -> w1227 addwf SUMHI,f ; SUMHI + w -> SUMHI 1228 CI_EXIT_21229 return12301231 ; Cálculo do termo integral_3: 1232 ; ------------------------------------------------------------------------1233 ; Cálcular Ki×(erro_actual)1234 ; ------------------------------------------------------------------------1235 C_INT_31236 movfw erro_actual ; erro_actual -> w 1237 movwf mulcnd 1238 movfw Ki1239 movwf mulplr1240 call mpy8x8_S ; Multiplicar Kp x erro_actual.1241 call LMT100 ; Limitar o valor entre 0 e 100.1242 RE_SGN21243 btfss PID_flag,0 ; O erro_actual é positivo?1244 goto ADDINT_3 ; Sim, então ir para...1245 comf L_byte,f ; Não, então cálcular o complemento 1246 incf L_byte,f ; para 2 do L_byte.1247 ADDINT_31248 movlw 0x001249 btfsc PID_flag,0 ; O sinal do valor erro_actual é positivo? 1250 movlw 0xFF ; Não, então aplicar o sinal negativo ao MSB.1251 movwf ACCbHI ; Sim, então aplicar o sinal positivo ao MSB.1252 movfw L_byte ; Passar o valor de L_byte -> w. 1253 movwf ACCbLO ; w -> ACCbLO1254 movfw SUMLO ; Passar o valor actual do SUMLO -> w.1255 movwf ACCaLO ; w -> ACCaLO. 1256 movfw SUMHI ; Passar o valor actual do SUMHI -> w.1257 movwf ACCaHI ; w -> ACCaHI.1258 call D_add ; Chamar a função de adição.1259 movfw ACCbLO ; Guardar os valores resultantes em1260 movwf SUMLO ; SUMLO e SUMHI respectivamente.1261 movfw ACCbHI1262 movwf SUMHI1263 CI_EXIT_31264 return12651266 ; Cálculo do termo derivativo: d(t)= (Kd × (erro_actual - erro_antigo))1267 ; ------------------------------------------------------------------------1268 ; NOTA: O termo derivativo baseia-se na análise da variação do valor do 1269 ; erro em relação ao seu valor anterior. Básicamente consiste em subtrair 1270 ; o antigo valor do erro ao erro actual. Uma vez que o tempo de ciclo do 1271 ; programa é práticamente constante pode usar-se como sendo o "dt" do 1272 ; desejado "de/dt". Esta derivada do erro é então multiplicada pelo ganho 1273 ; do termo diferencial Kd, obtendo desta forma o valor do termo derivativo.1274 ; ------------------------------------------------------------------------1275 C_DIFF1276 movfw erro_actual ; Passar o valor do erro_actual para o registo w. 1277 btfss PID_flag,0 ; O valor do erro_actual é positivo?

16

Page 199: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1278 goto LO_BYTE ; Sim, então ir para... 1279 comf erro_actual,f ; Não, então cálcular o complemento para 2 1280 incf erro_actual,w ; desse valor.1281 comf erro_actual,f ; Restaurar o valor do erro_actual. 1282 LO_BYTE1283 movwf ACCbLO ; Para subtração1284 movlw 0x001285 btfsc PID_flag,0 ; Passar o sinal para o Byte mais significativo.1286 movlw 0xFF1287 movwf ACCbHI1288 movfw erro_antigo ; Passar o valor do erro_antigo para o registo w. 1289 btfss PID_flag,1 ; O valor do erro_antigo é positivo?1290 goto LO_BYTEO ; Sim, então ir para... 1291 comf erro_antigo,f ; Não, então cálcular o complemento para 2 1292 incf erro_antigo,w ; desse valor.1293 comf erro_antigo,f ; Restaurar o valor do erro_antigo. 1294 LO_BYTEO1295 movwf ACCaLO ; Para subtração1296 movlw 0x001297 btfsc PID_flag,1 ; Passar o sinal para o Byte mais significativo.1298 movlw 0xFF1299 movwf ACCaHI1300 call D_sub ; erro_actual - erro_antigo1301 STRIP_SGN1302 btfsc ACCbHI,7 ; O sinal do resultado é positivo?1303 goto NEG_ABS ; Não, então ir para...1304 goto POS_ABS ; Sim, então ir para... 1305 NEG_ABS1306 bsf PID_flag,2 ; O resultado é negativo, então colocar a flag a 1 e1307 comf ACCbLO,f ; cálcular o complemento para 2 do resultado.1308 incf ACCbLO,w1309 movwf de_dt 1310 goto MULT_Kd1311 POS_ABS1312 bcf PID_flag,2 ; O resultado é positivo, então colocar a flag a 0 e1313 movfw ACCbLO ; guardar o resultado.1314 movwf de_dt13151316 ; Multiplicar o resultado por Kd1317 ; ------------------------------1318 MULT_Kd1319 movfw de_dt ; Passar o valor do de/dt para o multiplicando.1320 movwf mulcnd ; 1321 movfw Kd ; Passar o valor do Kd para o multiplicador.1322 movwf mulplr ; 1323 call mpy8x8_S ; Multiplicar (de_dt) x Kd1324 call LMT100 ; Limitar o valor entre 0 e 100.1325 RE_SGN1326 ;---------1327 movfw L_byte1328 btfsc STATUS,Z ; O termo derivativo é nulo?1329 goto CD_EXIT ; Sim, então ir para...1330 ;---------1331 btfss PID_flag,2 ; O sinal do valor de_dt é positivo?1332 goto ADDDIF ; Sim, então ir para...1333 comf L_byte,f ; Não, então 1334 incf L_byte,f13351336 ; Adicionar o valor do termo derivativo ao somatório 1337 ; ----------------------------------------------------1338 ADDDIF1339 movlw 0x001340 btfsc PID_flag,2 ; O sinal do valor de_dt é positivo? 1341 movlw 0xFF ; Não, então aplicar o sinal negativo ao MSB.1342 movwf ACCbHI ; Sim, então aplicar o sinal positivo ao MSB.1343 movfw L_byte ; Passar o resultado de Kd*(DE/DT) -> w. 1344 movwf ACCbLO ; w -> ACCbLO1345 movfw SUMLO ; Passar o valor actual do SUMLO -> w.1346 movwf ACCaLO ; w -> ACCaLO. 1347 movfw SUMHI ; Passar o valor actual do SUMHI -> w.1348 movwf ACCaHI ; w -> ACCaHI.1349 call D_add ; Chamar a função de adição.1350 movfw ACCbLO ; Guardar os valores resultantes em1351 movwf SUMLO ; SUMLO e SUMHI respectivamente.1352 movfw ACCbHI1353 movwf SUMHI1354 CD_EXIT1355 return13561357 ; Cálculo do termo derivativo_1:

17

Page 200: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1358 ; ------------------------------------------------------------------------1359 ; d(t)= Kd×[erro_actual-2×erro_antigo+ erro_antigo_2]1360 ; ------------------------------------------------------------------------1361 C_DIFF_11362 movfw erro_actual ; Passar o valor do erro_actual para o registo w. 1363 btfss PID_flag,0 ; O valor do erro_actual é positivo?1364 goto LO_BYTE_P1 ; Sim, então ir para... 1365 comf erro_actual,f ; Não, então cálcular o complemento para 2 1366 incf erro_actual,w ; desse valor.1367 comf erro_actual,f ; Restaurar o valor do erro_actual. 1368 LO_BYTE_P11369 movwf ACCbLO ; Para subtração1370 movlw 0x001371 btfsc PID_flag,0 ; Passar o sinal para o Byte mais significativo.1372 movlw 0xFF1373 movwf ACCbHI1374 bcf STATUS,C 1375 rlf erro_antigo,w ; Multiplicar o erro_antigo por 2.1376 movwf L_byte ; 2×erro_antigo -> L_byte.1377 call LMT100 ; Limitar o resultado entre 0 e 100.1378 movfw L_byte1379 btfss PID_flag,1 ; O valor do erro_antigo é positivo?1380 goto LO_BYTEO_P1 ; Sim, então ir para... 1381 comf L_byte,f ; Não, então cálcular o complemento para 2 1382 incf L_byte,w ; desse valor.1383 comf L_byte,f ; Restaurar o valor do erro_antigo. 1384 LO_BYTEO_P11385 movwf ACCaLO ; Para subtração1386 movlw 0x001387 btfsc PID_flag,1 ; Passar o sinal para o Byte mais significativo.1388 movlw 0xFF1389 movwf ACCaHI1390 call D_sub ; erro_actual - 2×erro_antigo1391 STRIP_SGN21392 btfsc ACCbHI,7 ; O sinal do resultado é positivo?1393 goto NEG_ABS2 ; Não, então ir para...1394 goto POS_ABS2 ; Sim, então ir para... 1395 NEG_ABS21396 bsf PID_flag,7 ; O resultado é negativo, então colocar a flag a 1 e1397 movfw ACCbLO1398 movwf L_byte1399 comf L_byte,f ; Não, então cálcular o complemento para 2 1400 incf L_byte,f ; desse valor.1401 goto Ad_erro_21402 POS_ABS21403 bcf PID_flag,7 ; O resultado é positivo, então colocar a flag a 0 e1404 movfw ACCbLO ; guardar o resultado.1405 movwf L_byte1406 Ad_erro_21407 ; (L_byte + erro_2)1408 movfw L_byte ; Passar o valor do erro_actual para o registo w. 1409 btfss PID_flag,7 ; O valor do L_byte é positivo?1410 goto LO_BYTE_P2 ; Sim, então ir para... 1411 comf L_byte,f ; Não, então cálcular o complemento para 2 1412 incf L_byte,w ; desse valor.1413 comf L_byte,f ; Restaurar o valor do L_byte. 1414 LO_BYTE_P21415 movwf ACCbLO ; Para adição1416 movlw 0x001417 btfsc PID_flag,7 ; Passar o sinal para o Byte mais significativo.1418 movlw 0xFF1419 movwf ACCbHI1420 movfw erro_2 ; Passar o valor do erro_antigo para o registo w. 1421 btfss PID_flag,6 ; O valor do erro_2 é positivo?1422 goto LO_BYTEO_P2 ; Sim, então ir para... 1423 comf erro_2,f ; Não, então cálcular o complemento para 2 1424 incf erro_2,w ; desse valor.1425 comf erro_2,f ; Restaurar o valor do erro_antigo. 1426 LO_BYTEO_P21427 movwf ACCaLO ; Para subtração1428 movlw 0x001429 btfsc PID_flag,6 ; Passar o sinal para o Byte mais significativo.1430 movlw 0xFF1431 movwf ACCaHI1432 call D_add ; L_byte + erro_21433 STRIP_SGN31434 btfsc ACCbHI,7 ; O sinal do resultado é positivo?1435 goto NEG_ABS3 ; Não, então ir para...1436 goto POS_ABS3 ; Sim, então ir para... 1437 NEG_ABS3

18

Page 201: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1438 bsf PID_flag,7 ; O resultado é negativo, então colocar a flag a 1 e1439 comf ACCbLO,f ; cálcular o complemento para 2 do resultado.1440 incf ACCbLO,w1441 movwf L_byte 1442 goto MULT_Kd11443 POS_ABS31444 bcf PID_flag,7 ; O resultado é positivo, então colocar a flag a 0 e1445 movfw ACCbLO ; guardar o resultado.1446 movwf L_byte14471448 ; Multiplicar o resultado por Kd1449 ; ------------------------------1450 MULT_Kd11451 movfw L_byte ; Passar o valor do L_Byte para o multiplicando.1452 movwf mulcnd ; 1453 movfw Kd ; Passar o valor do Kd para o multiplicador.1454 movwf mulplr ; 1455 call mpy8x8_S ; Multiplicar (L_byte) x Kd1456 call LMT100 ; Limitar o valor entre 0 e 100.1457 RE_SGN31458 ;---------1459 movfw L_byte1460 btfsc STATUS,Z ; O resultado é nulo?1461 goto CD2_EXIT ; Sim, então ir para...1462 ;---------1463 btfss PID_flag,7 ; O sinal do valor L_byte é positivo?1464 goto ADDDIFF1 ; Sim, então ir para...1465 comf L_byte,f ; Não, então 1466 incf L_byte,f14671468 ; Adicionar o resultado ao somatório 1469 ; ----------------------------------1470 ADDDIFF11471 movlw 0x001472 btfsc PID_flag,7 ; O sinal do valor L_byte é positivo? 1473 movlw 0xFF ; Não, então aplicar o sinal negativo ao MSB.1474 movwf ACCbHI ; Sim, então aplicar o sinal positivo ao MSB.1475 movfw L_byte ; Passar o valor de L_byte -> w. 1476 movwf ACCbLO ; w -> ACCbLO1477 movfw SUMLO ; Passar o valor actual do SUMLO -> w.1478 movwf ACCaLO ; w -> ACCaLO. 1479 movfw SUMHI ; Passar o valor actual do SUMHI -> w.1480 movwf ACCaHI ; w -> ACCaHI.1481 call D_add ; Chamar a função de adição.1482 movfw ACCbLO ; Guardar os valores resultantes em1483 movwf SUMLO ; SUMLO e SUMHI respectivamente.1484 movfw ACCbHI1485 movwf SUMHI1486 CD2_EXIT1487 return14881489 ; Limitar o somatório final para um valor entre 0 e 100%1490 ; ------------------------------------------------------1491 L_SUMM1492 btfss SUMHI,7 ; O sinal do somatório é positivo? 1493 goto POS_LM ; Sim, então ir para...1494 clrf SUMHI ; Não, então...1495 clrf SUMLO1496 POS_LM 1497 movlw 0x01 ; Subtrair 1 ao SUMHI, 1498 subwf SUMHI,w ; para ver se este possui algum valor.1499 btfss STATUS,C ; O SUMHI possui algum valor?1500 goto LB_L ; Não, então validar apenas o LOW BYTE.1501 movlw .100 ; Sim, então limitar o SUMLO a 100.1502 movwf SUMLO 1503 goto LP_EXIT1504 LB_L1505 movlw .100 ; Limitar a amplitude do valor para 100 em décimal. 1506 subwf SUMLO,w ; (SUMLO - w) -> w 1507 btfss STATUS,C ; O resultado é positivo?1508 goto LP_EXIT ; Sim, então saltar para LP_EXIT 1509 movlw .100 ; Não, então limitar o SUMLO a 100.1510 movwf SUMLO1511 LP_EXIT15121513 ; Passar o valor final do somatório para o registo SpR_value1514 ; ----------------------------------------------------------1515 WRITE_RESULT1516 movfw SUMLO1517 movwf SpR_value ; Speed (0-100).

19

Page 202: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

15181519 ; Backup do erro1520 ; --------------1521 ERROR_BKP1522 movfw erro_antigo1523 movwf erro_21524 bcf PID_flag,61525 btfsc PID_flag,11526 bsf PID_flag,61527 movfw erro_actual ; Passar o valor do erro_actual1528 movwf erro_antigo ; para o erro_antigo. 1529 bcf PID_flag,1 ; Colocar a flag do erro_antigo a 0.1530 btfsc PID_flag,0 ; O sinal do erro actual é positivo? 1531 bsf PID_flag,1 ; Não então colocar a flag do erro_antigo a 1.15321533 Controlo_EXIT1534 bcf Status_flag,4 ; Reiniciar a flag de leitura da velocidade do encoder.1535 return15361537 ;************************************************************************************1538 ; FUNÇÕES ARITMÉTICAS *1539 ;************************************************************************************1540 ; Multiplicação 8x8 1541 ; -----------------1542 mpy8x8_S1543 clrf H_byte1544 clrf L_byte1545 movlw .81546 movwf count ; Count = 81547 movfw mulcnd1548 bcf STATUS,C ; Limpar o carry.1549 loop 1550 rrf mulplr,f1551 btfsc STATUS,C1552 addwf H_byte,f1553 rrf H_byte,f1554 rrf L_byte,f1555 decfsz count,f 1556 goto loop1557 return15581559 ; Subtracção de dupla precisão ( ACCb-ACCa->ACCb)1560 ; -----------------------------------------------1561 D_sub 1562 call neg_A ; Obter o comp2 do valor e depois adiciona-lo.15631564 ; Adição de dupla precisão ( ACCb+ACCa->ACCb )1565 ; --------------------------------------------1566 D_add 1567 movfw ACCaLO1568 addwf ACCbLO,f ; Adicionar o LSB1569 btfsc STATUS,C 1570 incf ACCbHI,f1571 movfw ACCaHI 1572 addwf ACCbHI,f ; Adicionar o MSB1573 return1574 neg_A 1575 comf ACCaLO,f ; Complemento para 1 do valor do ACCa.1576 incf ACCaLO,f ; Complemento para 2 do valor do ACCa.1577 btfsc STATUS,Z1578 decf ACCaHI,f1579 comf ACCaHI,f1580 return15811582 ; Limitar o valor do resultado entre 0 e 100 1583 ; ------------------------------------------1584 LMT1001585 movlw 0x01 ; Subtrair 1 ao HIGH BYTE, 1586 subwf H_byte,w ; para ver se este possui algum valor.1587 btfss STATUS,C ; O HIGH BYTE possui algum valor?1588 goto L8_E ; Não, então validar apenas o LOW BYTE.1589 movlw .100 ; Limitar o L_byte a 100.1590 movwf L_byte 1591 goto LMT100_EXIT1592 L8_E1593 movlw .100 ; Limitar a amplitude do valor para 100 em décimal. 1594 subwf L_byte,w ; (L_byte - w) -> w 1595 btfss STATUS,C ; O resultado é positivo?1596 goto LMT100_EXIT ; Sim, então saltar para LMT_EXIT 1597 movlw .100 ; Não, então limitar o L_byte a 100.

20

Page 203: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1598 movwf L_byte1599 LMT100_EXIT1600 return16011602 ;************************************************************************************1603 ; TEMPORIZAÇÃO (ms) *1604 ;************************************************************************************1605 msDelay1606 movwf MsDelayCounter+11607 movwf Time_value ; Guardar o valor de w1608 movlw Oscilator_value ; Inicializar o contador (segundo o oscilador usado)1609 movwf Counter ; w -> Counter 1610 Loop_Quartz_xxMHz1611 movfw Time_value ; Time_value -> w1612 movwf MsDelayCounter+11613 clrf MsDelayCounter+01614 msDelayLoop1615 clrwdt ; Limpar o Watchdog Timer.1616 decfsz MsDelayCounter+0,F1617 goto msDelayLoop1618 clrwdt ; Limpar o Watchdog Timer.1619 decfsz MsDelayCounter+1,F1620 goto msDelayLoop1621 decfsz Counter,F1622 goto Loop_Quartz_xxMHz1623 return1624 ;************************************************************************************1625 ; INICIALIZAÇÃO DOS PORTOS *1626 ;************************************************************************************1627 init_ports16281629 ; Inicializar PORTS (banco 0 e 1)1630 ; -------------------------------1631 BANK0 ; Aceder ao banco 0.1632 clrf PORTA ; Saídas do PORTA a 0.1633 clrf PORTB ; Saídas do PORTB a 0.1634 clrf PORTC ; Saídas do PORTC a 0.1635 clrf PIR11636 BANK1 ; Aceder ao banco 1.1637 movlw ADCON1VAL ; PORTA no modo A/D.1638 movwf ADCON1 ; Escrever no registo ADCON1.1639 movlw DIRPORTA ; Direcção do PORTA.1640 movwf TRISA ; Escrever no registo de direcção TRISA.1641 movlw DIRPORTB ; Direcção do PORTB.1642 movwf TRISB ; Escrever no registo de direcção TRISB.1643 movlw DIRPORTC ; Direcção do PORTC.1644 movwf TRISC ; Escrever no registo de direcção TRISC.16451646 ; Registo de opções (banco 1)1647 ; ---------------------------1648 movlw OPTIONVAL ; copiar o valor da constante para o w.1649 movwf OPTION_REG ; configurar o registo OPTION_REG com esse valor.16501651 ; Limpar RAM (banco 0)1652 ; --------------------1653 bcf STATUS,RP0 ; Aceder ao banco 0.1654 movlw 0x20 ; Inicialização do apontador,1655 movwf FSR ; de endereçamento indirecto.1656 init_ram1657 clrf INDF ; Limpar a RAM.1658 incf FSR,f ; Apontar para o proximo.1659 btfss FSR,7 ; Verificar se chegou ao fim(>7Fh).1660 goto init_ram ; Se não chegou, continuar no ciclo.1661 return16621663 ;************************************************************************************1664 ; INICIALIZAÇÃO DO TIMER1 *1665 ;************************************************************************************1666 init_tmr11667 BANK0 ; Aceder ao banco 0.1668 movlw B'00000110' ; Configurar o TMR1 no modo contador assíncrono.1669 movwf T1CON ; Configurar o registo T1CON com esse valor.1670 return16711672 ;************************************************************************************1673 ; INICIALIZAÇÃO DO TIMER2 *1674 ;************************************************************************************1675 init_tmr21676 BANK1 ; Aceder ao banco 1.1677 movlw PR2VAL ; PR2VAL - > w

21

Page 204: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1678 movwf PR2 ; w -> PR21679 BANK0 ; Aceder ao banco 0.1680 movlw B'0000100' ; Pós-divisor a 1, pré-divisor a 1, timer ON1681 movwf T2CON ; Configurar o registo T2CON com esse valor.1682 movlw CCP1CONVAL ; Copiar o valor da constante para o w.1683 movwf CCP1CON ; Configurar o registo SSPCON com esse valor.1684 clrf CCPR1L ; Inicializar o PWM com o valor zero.16851686 ; Inicializar a variável1687 ; -----------------------1688 movlw COMPTVAL1_tmr2 ; Definir o valor do contador de passagens,1689 movwf Contador1_tmr2 ; pela interrupção do TMR2.1690 movlw COMPTVAL2_tmr2 ; Definir o valor do contador de passagens,1691 movwf Contador2_tmr2 ; pela interrupção do TMR2.1692 return16931694 ; ///////////////////////////////////////////////////////////////////////////////////16951696 ; P R O G R A M A16971698 ; ///////////////////////////////////////////////////////////////////////////////////16991700 ;************************************************************************************1701 ; Inicializações *1702 ;************************************************************************************1703 main_init1704 pagesel init_ports1705 call init_ports ; Inicialização dos Portos.1706 pagesel init_tmr11707 call init_tmr1 ; Inicialização do TMR1.1708 pagesel init_tmr21709 call init_tmr2 ; Inicialização do TMR2.17101711 ; Definir os registos de interrupções (banco 1)1712 ; --------------------------------------------1713 BANK11714 movlw PIE1VAL ; Copiar o valor da constante para o w. 1715 movwf PIE1 ; Activar as interrupções SSPIE.1716 movlw PIE2VAL ; Copiar o valor da constante para o w.1717 movwf PIE2 ; Configurar o registo PIE2 com esse valor.17181719 ; Inicializar a USART1720 ; -------------------1721 movlw TXSTAVAL ; Emissão de 9 bits, modo high speed.1722 movwf TXSTA ; Configurar o registo TXSTA com esse valor.1723 movlw SPBRGVAL ; Copiar o valor da constante para o w.1724 movwf SPBRG ; Configurar o registo SPBRG com esse valor.1725 BANK0 ; Aceder ao banco 0.1726 movlw RCSTAVAL ; Recepção de 9 bits, modo high speed.1727 movwf RCSTA ; Configurar o registo RCSTA com esse valor.17281729 ; Inicializar as variáveis1730 ; ------------------------1731 clrf Serial_flag ; Limpar as Flags1732 movlw LOW bufin ; Endereço do buffer de recepção,1733 movwf bufinptr ; para o apontador.1734 movlw LOW bufout ; Endereço do buffer de transmissão,1735 movwf bufoutptr ; para o apontador.17361737 ; Autorizar as interrupções periféricas e globais 1738 ; -----------------------------------------------1739 movlw INTCONVAL ; Activar as interrupções periféricas e globais.1740 movwf INTCON ; Configurar o registo INTCON com esse valor.1741 goto main1742 1743 ;************************************************************************************1744 ; Corpo principal do programa *1745 ;************************************************************************************1746 main1747 BANK01748 bsf LED_Vida1749 main_loop1750 BANK01751 clrwdt ; Limpar o Watchdog Timer1752 btfsc Rec_Stop ; Chegaram novos dados?1753 call ReceiveSerial1754 btfsc Status_flag,2 ; Chegaram novos dados (Parâmetros+Speed)?1755 call Test_value ; Sim, então chamar a função Test_value.1756 btfss Status_flag,4 ; O valor da velocidade real foi obtido?1757 goto main_loop ; Não, então...

22

Page 205: Escola de Engenharia - intranet.dei.uminho.ptintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/26266.pdf · 1.2.1.1.1 Motor de CC Composto (Compound) ... Motores Síncronos ... FIGURA

C:\Projectos\Microchip\Pic16F876\PID_RS232.asm

1758 call TransmitSerial ; Sim, então...1759 call Controlo1760 goto main_loop 1761 END1762 ;************************************************************************************1763 ; _/ \_ Fim *1764 ;************************************************************************************1765

23