Acionamentos de Motores de Passo

45
PMR2310 - LABORATÓRIO 39 Acionamento de motores elétricos de passo Transformando comandos por software em movimentos de máquinas com motor de passo s experiências com motores de passo (Experiência 5) e com motores CC (Experiência 6) serão realizadas em duas aulas, sendo que em cada uma das aulas, a metade da turma fará experiência com motor de passo e a outra metade com motor CC, de modo que todos os alunos façam as experiências com os dois tipos de motores. Caso não existam sistemas de posicionamento com motores de passo e CC suficientes para todos os grupos de dois alunos, mais de um grupo poderá participar por bancada. Contudo, nestes casos, os relatórios deverão ser entregues por grupo. Objetivo O objetivo destas duas experiências é que o aluno se familiarize com o acionamento por microprocessador de dois tipos importantes de motores elétricos utilizados em automação industrial. Os motores estão montados em dispositivos de movimentação linear com sensores de fim de curso. O aluno deverá exercitar a movimentação de um bloco deslizante, monitorando sua posição e evitando colisões nos finais de curso com o auxílio dos sensores. Resumo Na primeira parte da aula, o aluno deverá familiarizar-se com o acionamento do motor elétrico de passo, com a leitura dos sensores de fim de curso. Na segunda parte, o aluno deverá implementar um programa de controle manual de posicionamento do bloco deslizante utilizando as teclas, os LEDs e o display para mostrar a posição do motor. Experiência 5 A

Transcript of Acionamentos de Motores de Passo

Page 1: Acionamentos de Motores de Passo

P M R 2 3 1 0 - L A B O R A T Ó R I O

39

Acionamento de motores elétricos de passo Transformando comandos por software em movimentos de máquinas com motor de passo

s experiências com motores de passo (Experiência 5) e com motores CC (Experiência 6) serão realizadas em duas aulas, sendo que em cada uma das aulas, a metade da turma fará experiência com motor de passo e a outra metade com motor CC, de modo

que todos os alunos façam as experiências com os dois tipos de motores. Caso não existam sistemas de posicionamento com motores de passo e CC suficientes para todos os grupos de dois alunos, mais de um grupo poderá participar por bancada. Contudo, nestes casos, os relatórios deverão ser entregues por grupo.

Objetivo O objetivo destas duas experiências é que o aluno se familiarize com o acionamento por microprocessador de dois tipos importantes de motores elétricos utilizados em automação industrial. Os motores estão montados em dispositivos de movimentação linear com sensores de fim de curso. O aluno deverá exercitar a movimentação de um bloco deslizante, monitorando sua posição e evitando colisões nos finais de curso com o auxílio dos sensores.

Resumo Na primeira parte da aula, o aluno deverá familiarizar-se com o acionamento do motor elétrico de passo, com a leitura dos sensores de fim de curso. Na segunda parte, o aluno deverá implementar um programa de controle manual de posicionamento do bloco deslizante utilizando as teclas, os LEDs e o display para mostrar a posição do motor.

Experiência

5

A

Page 2: Acionamentos de Motores de Passo

40

Procedimento experimental Estudo obrigatório. O aluno deverá ler o capítulo 4 do Manual de Referência sobre o Módulo de Interface do Motor de Passo, devendo compreender a arquitetura da interface, sua configuração de hardware, sua programação inicial e como utilizar o Registrador de Controle para fazer o motor de passo se mover. O aluno

deverá também ler o datasheet do 8255 que é utilizado para se adquirir informações dos sensores nesta experiência e na próxima.

Conexões do sistema. Diversos cabos deverão ser conectados para a realização desta experiência. A Figura 26 do Manual de Referência mostra como conectar os cabos entre os módulos que compõe o kit, o módulo de interface com o motor de passo, o sistema de posicionamento linear e a fonte de alimentação. Siga atentamente o esquema mostrado na figura antes de ligar a alimentação.

Atenção:

Antes de ligar a fonte de alimentação certifique-se de que os cabos estão conectados corretamente. A inversão de algum cabo pode causar danos ao kit. Na dúvida consulte o professor.

Ligando o sistema. Depois de conferidas as ligações feitas pode-se ligar a fonte de alimentação. Logo após a ligação da fonte de alimentação, se as ligações estiverem corretas o eixo do motor deverá estar travado.

Nota:

Verifique com a mão que o eixo do motor está travado segurando no eixo e fazendo pequena força para cada lado.

Estando tudo correto, aparecerá também o prompt do monitor na tela do computador se este estiver conectado ao módulo processador do kit e em modo de terminal.

A primeira providência a se tomar é desligar o driver do motor de passo por software. Isto pode ser feito usando-se o comando do monitor C> o d0 0. Este procedimento é necessário para que o driver não se aqueça excessivamente. O programa em C a ser implementado também deve desligar o driver nas primeiras linhas do programa principal em

Ajuste a tensão de +12 Volts da fonte de alimentação antes de conectar qualquer cabo.

O endereço d0h depende da configuração de jumpers, veja no Manual de Referência.

Page 3: Acionamentos de Motores de Passo

41

Linguagem C. Depois o driver será ligado para a movimentação do motor.

Nota:

Verifique com a mão que o eixo do motor está destravado segurando no eixo e fazendo pequena força para cada lado. Se conseguir movimentá-lo, o comando acima funcionou.

Nesta experiência, toda vez que o motor for mantido em repouso por um longo período de tempo, seja por que está esperando algum evento para movimentar o motor ou por que nenhum programa para movimentar o motor está sendo executado, o driver deve ser desligado por software.

Acionamento do motor de passo. O motor de passo pode ser acionado por comandos dados diretamente ao monitor. A seqüência de comandos é dada no item 4.3. do Manual de Referência. O módulo de interface com o motor de passo também possui um 8254 (timers programáveis) que é usado para movimentar o motor. Este 8254 deve ser programado para sua operação específica de controle do motor de passo. O trecho de comandos do Monitor abaixo programa os timers do módulo para movimentação do motor na freqüência de 400 pulsos por segundo (400 Hz) dando 20 voltas.

Comandos para programar timers:

C> o d0 0 (desliga o driver) C> o d7 36 (programa timer 0 p/ modo 3 binário) C> o d4 00 (constante para 4 kHz no timer 0) C> o d4 03 (corresponde a 300h) C> o d7 56 (programa timer 1 p/ modo 3 binário) C> o d5 0a (constante para 400Hz no timer 1, corresponde a ah, p/ 200Hz é 14h, p/ 500Hz é 8h) C> o d7 ba (programa timer 2 p/ modo 5 binário) C> o d6 a0 (constante para 20 voltas no timer 2) C> o d6 f (corresponde a fa0h)

Para disparar o movimento do motor de passo é utilizado o Registrador de Controle do módulo de interface. De acordo com o Manual de Referência o bit DISP do Registrador de controle deve estar inicialmente em zero, ir para 1 para disparar o movimento e retornar para zero antes de re-disparar o movimento novamente. O bit DIR controla a direção de movimento do motor de passo, zero para movimentar no sentido horário e 1 para movimentar no sentido anti-horário. O movimento do motor de passo pode ser controlado por comandos do Monitor diretamente. O trecho de comandos abaixo dispara o movimento do motor de passo no sentido horário e depois no sentido anti-horário.

Page 4: Acionamentos de Motores de Passo

42

Comandos para controlar o movimento do motor de passo:

C> o d0 16 (liga o driver e prepara para andar p/ esquerda) C> o d0 1e (dispara o movimento para a esquerda) C> o d0 96 (liga o driver e prepara para andar p/ direita) C> o d0 9e (dispara o movimento para a direita)

Leitura de sensores. A leitura dos sensores do sistema de posicionamento linear é feita através do 8255, que contém portas paralelas programáveis, presente no módulo de I/O. O Capítulo 2 do Manual de Referência contém os detalhes de como programar o 8255. Para a leitura dos sensores. este 8255 deve ser inicialmente programado para que a porta A opere para

entrada e a porta B para saída. A porta C não é utilizada e pode ser programada para qualquer direção. A direção default para qualquer uma das portas é entrada. Esta programação inicial pode ser feita por um comando direto do Monitor no endereço do registrador de controle do 8255 de acordo com o exemplo abaixo.

Programação do modo de operação do 8255 pelo Monitor:

C> o c3 90 (programa porta A para entrada e porta B para saída)

Os sensores estão conectados nos quatro bits menos significativos da porta A do 8255. Para ler o conteúdo desta porta pode-se usar o comando direto do Monitor conforme o exemplo abaixo.

Leitura dos sensores pelo Monitor:

C> i c0 (lê o valor da porta A do 8255) DATA = DF (o valor lido é indicado depois do =) C>

O valor da porta A é mostrado na tela. Os quatro bits menos significativos contém o valor dos quatro sensores no momento da leitura. Os quatro bits mais significativos não contém informação nenhuma e deve ser descartados antes da interpretação dos bits menos significativos.

Para se isolar o status de um determinado sensor num programa em Linguagem C sugere-se a aplicação de uma função AND bit a bit com uma máscara que seja composta por 0s em todos os bits indesejáveis e 1 no bit desejável. O trecho de programa abaixo exemplifica este procedimento.

O endereço c3h depende da configuração de jumpers, veja no Manual de Referência.

Page 5: Acionamentos de Motores de Passo

43

Exemplo para detectar se o sensor 1 foi ativado:

int s1; // variável para status do sensor 1 out (0xc3, 0x90); // programa o 8255 com a porta A para // entrada s1 = in(0xc0) & 0x01; // lê o sensor 1 (bit menos // significativo) e aplica a máscara // (00000001)b para isolar o bit if (s1 == 0) { // se for igual a zero é porque // detectou . . . }

Projeto. O aluno deverá implementar um programa para controlar a movimentação do bloco deslizante através das teclas do kit, da seguinte forma:

1. Ao se pressionar a tecla 1 o motor se move para a esquerda até ser detectado a entrada do sensor óptico. O movimento é parado e escreve-se mensagem no display LCD de que o sistema está pronto.

2. A se pressionar a tecla 2 o sistema inicia o movimento para a direita em velocidade baixa até que o sensor magnético pare de detectar a presença do bloco.

3. O movimento prossegue em velocidade alta até que seja detectado o sensor magnético da direita, quando então a velocidade deve ser reduzida para a velocidade baixa.

4. Ao ser detectado o sensor óptico da direita o motor deve inverter a sua direção sem parar e o mesmo procedimento anterior é repetido no sentido contrário.

5. A tecla 3 é usada para parar o sistema a qualquer momento.

Responder no relatório. O aluno deverá responder as seguintes perguntas no relatório. Recomenda-se testar as respostas durante a aula.

1. Qual é a programação dos timers do 8254 para mover o motor de passo 25 voltas com velocidade de 150 pulsos por segundo?

2. Qual é a freqüência máxima que o motor de passo pode partir estando parado?

3. Por que é programado o valor 90h no endereço c3h? Explique o significado do 90h.

Page 6: Acionamentos de Motores de Passo

PMR2310 – Microprocessadores Aplicados à Automação Manual de Referência

Capítulo 4

Page 7: Acionamentos de Motores de Passo

PMR2310 – Microprocessadores aplicados à automação 21

4. Módulo de Interface com Motor de Passo O acionamento do motor de passo é feito através da programação de um 8254 (Timer Programável) presente na interface com motor de passo. A Figura 22 mostra o diagrama de blocos deste módulo. Conforme esta figura o Timer 0 deve ser programado para reduzir a freqüência do clock do sistema (SYSCLOCK = 3,072 MHz) para uma freqüência 2 vezes maior que a velocidade máxima de movimentação do motor de passo. A saída do Timer 0 é ligada diretamente ao clock do Timer 1 com o qual pode-se ajustar a freqüência de acionamento do motor de passo, ou seja, a taxa de passos por segundo. Através da variação desta freqüência durante o movimento, o motor pode ser acelerado ou desacelerado. O Timer 2 em conjunto com o flip-flop e com as portas lógicas permite a definição do número de pulsos que deverá ser enviado para o motor.

Os outros comandos para a interface são dados através do registrador de comandos. Os comandos disponíveis são os seguintes:

• habilita/desabilita acionamento do motor

• controle de direção

• habilita/desabilita Timer 1

• dispara movimento

• define se o movimento é em half ou full step

• zera a contagem de pulsos

A Figura 23 mostra o significado dos bits do registrador de controle.

CLR

&

Via de dadosdo sistema

DIREÇÃO

ENABLE

8254

SYSRESET&

gate gate gate

Vcc

CLOLK

CLK

Q

D Q

SYSCLOCK(clock do sistema)

Driver depotência(L298)

Controladorde motor de

passo(L297)

Registradorde controle

Timer 0(modo 3)

Timer 1(modo 3)

Timer 2(modo 5)

Vcc

Motor depasso

Figura 22. Diagrama de blocos do módulo de controle de motor de passo

Page 8: Acionamentos de Motores de Passo

versão de 14/02/03 22

4.1 Pontos de Teste e Jumpers de Configuração Este módulo possui dois pontos de teste para verificação dos sinais com o osciloscópio. O ponto TP1 é o sinal de seleção do 82C54 (Timers programáveis) e o ponto TP2 é o terra para conexão do terra do osciloscópio.

Os jumpers JP1 a JP4 configuram o tipo de módulo processador, se 8085 ou se 68HC11, Tabela XIV, enquanto que os jumpers JP5 a JP8 configuram as faixas de endereços de acesso do módulo, Tabela XV. A Figura 24 mostra a posição dos jumpers na placa do módulo.

Tabela XIV. Configuração do tipo de microprocessador/ microcontrolador

microprocessador/microcontrolador JP1 JP2 JP3 JP4

8085 ON OFF ON OFF

8052 ou 68HC11 OFF ON OFF ON

Tabela XV. Configuração das faixas de endereços de I/O

Faixa de endereços JP5 JP6 JP7 JP8

C0H - CFH ON OFF OFF OFF

D0H - DFH OFF ON OFF OFF

E0H - EFH OFF OFF ON OFF

F0H - FFH OFF OFF OFF ON

A função de cada endereço é determinada pelos bits A0 a A3 de endereço adicionalmente aos bits A4 a A7 determinados pelos jumpers JP5 a JP8. A Tabela XVI mostra a função de cada endereço na interface. O registrador de controle da interface está no endereço n0H (onde n pode ser C, D, E ou F dependendo dos jumpers JP5 a JP8) enquanto que o timer 8254 ocupa os endereços n4H a n7H (onde n pode ser C, D, E ou F dependendo dos jumpers JP5 a JP8).

H/FGT1ENDISPCLRxxDIR

D0D1D2D3D4D5D6

* n pode ser C, D, E, ou F, depende dos jumpers de seleção de endereços da interface

Endereço: n0H*

D7

Modo Half ou Full step0 – Full step1 – Half step

Gate do Timer 10 – para Timer1 – habilita Timer

Habilita Driver do motor0 – desabilita driver1 – habilita driver

Dispara movimento quando em HIGH,deve retornar para LOW pelo menos umciclo de clock antes de ser redisparado

Direção de rotação do motor0 – sentido horário1 – sentido anti-horário

Limpa o flip-flop de contagem de pulsos0 – limpa o flip-flop1 – permite a contagem

Figura 23. Palavra de controle da interface com motor de passo

Page 9: Acionamentos de Motores de Passo

PMR2310 – Microprocessadores aplicados à automação 23

Tabela XVI. Funções dos endereços internos do módulo

Endereços Dispositivo Função

A3 A2 A1 A0

0 0 0 0 registrador escrita no registrador de controle da interface

0 1 0 0 8254 leitura/escrita no Contador 0

0 1 0 1 8254 leitura/escrita no Contador 1

0 1 1 0 8254 leitura/escrita no Contador 2

0 1 1 1 8254 leitura/escrita no Registrador de Controle

4.2 Sinais dos Conectores O conector P1, flat-cable de 50 pinos, conecta o módulo de motor de passo ao barramento comum a todos os módulos, podendo ser conectado a qualquer módulo com conector livre.

Os conectores P4 e P5 são para conexão ao motor de passo e à fonte de alimentação de +12V, respectivamente. O conector P4 é do tipo Molex com 8 pinos, enquanto que o conector P5 é do tipo Molex com 2 pinos.

As posições dos conectores no módulos estão indicadas na Figura 24.

4.3 Programação e Controle da Interface A programação da interface com o motor de passo requer uma série de procedimentos para a sua operação correta. Os Timers do 8254 são conectados de uma maneira fixa pelo hardware, descrita anteriormente, e requerem uma programação dos modos adequados para o controle do motor de passo. As funções de cada Timer são as seguintes:

• Timer 0 - reduz a freqüência do clock do sistema para um valor de até duas vezes a freqüência máxima do motor de passo.

1

LED Power On

P4

P1

JP1

TP2 GND

TP1 /CS82C54

JP2

JP3JP4JP5

JP6

JP7

JP8

1 P5

ajuste de corrente

Figura 24. Jumpers de configuração e pontos de teste e posição dos conectores

Page 10: Acionamentos de Motores de Passo

versão de 14/02/03 24

• Timer 1 - ajusta a freqüência de rotação do motor, o valor mínimo é 2, ou seja, a freqüência é sempre dividida no mínimo por 2.

• Timer 2 - determina a quantidade de pulsos para o movimento do motor, ou seja, qual o deslocamento angular do motor.

A Figura 25 apresenta o procedimento para inicialização da interface.

Para iniciar o movimento deve-se escrever no registrador de controle o bit D3=HIGH. Após a escrita deste bit no registrador de controle o motor de passo inicia o movimento com a freqüência programada no Timer 1 com o número de pulsos programado no Timer 2. O bit D3 do registrador de controle deve retornar para LOW antes de disparar o movimento do motor de passo novamente.

O movimento do motor de passo é independente de qualquer comando por software, uma vez iniciado o movimento o mesmo é interrompido se ocorrer uma das situações abaixo:

• O motor completa o movimento com o número de pulsos programado no Timer 2.

• O bit D2 é retornado para LOW o que causa a parada imediata do motor de passo independente dos valores dos Timers 1 e 2, pois este bit desabilita o controlador do motor de passo diretamente.

• O bit D1 é colocado em LOW o que causa a suspensão do Timer 1 que para de enviar pulsos para o controlador do motor de passo.

• O bit D4 é colocado em LOW e depois em HIGH o que reseta o flip-flop de ocntagem de pulsos e impede que o clock chegue ao controlador de motor de passo.

A direção do movimento pode ser invertida com o motor em movimento através da escrita no registrador de comando. Setando o bit D7=LOW o motor move-se em sentido horário, com D7=HIGH o motor move-se em sentido anti-horário.

Para se determinar se o movimento do motor de passo chegou ao fim pode-se ler o valor do Timer 2 e verificar duas situações:

• Se o valor é zero, o que indica que o número de pulsos programado foi atingido.

• Se o valor é próximo de FFFFH, o que indica que o número de pulsos programado foi atingido e como o Timer 1 não foi interrompido a contagem to Timer 2 prosseguiu. Note que apesar da contagem do Timer 2 prosseguir o mesmo não fornecerá valor na saída até ser reprogramado.

4.4 Conexões do Módulo de Motor de Passo com o sistema A Figura 26 mostra as conexões entre o módulo de motor de passo, os outros módulos do kit, a fonte de alimentação e o sistema de posicionamento.

Inicio

limpa o flip-flop decontagem de pulsos

(bit D4)

habilita o driver domotor de passo

(bit D2)

reseta o bit dedisparo domovimento

(bit D3)

programa o modo doTimer 0

programa o modo doTimer 2

programa o modo doTimer 1

programa aconstante de

redução de freq. doTimer 0

programa aconstante develocidade do

Timer1

programa aconstante de númerode pulsos do Timer 2

Fim

Figura 25. Procedimento de inicialização da interface

Page 11: Acionamentos de Motores de Passo

PMR2310 – Microprocessadores aplicados à automação 25

Figure 26. Conexões do Módulo do Motor de Passo com os outros mídulos do sistema

Page 12: Acionamentos de Motores de Passo

October 1995 Order Number: 231256-004

82C55ACHMOS PROGRAMMABLE PERIPHERAL INTERFACE

Y Compatible with all Intel and MostOther Microprocessors

Y High Speed, ‘‘Zero Wait State’’Operation with 8 MHz 8086/88 and80186/188

Y 24 Programmable I/O Pins

Y Low Power CHMOS

Y Completely TTL Compatible

Y Control Word Read-Back Capability

Y Direct Bit Set/Reset Capability

Y 2.5 mA DC Drive Capability on all I/OPort Outputs

Y Available in 40-Pin DIP and 44-Pin PLCC

Y Available in EXPRESSÐ Standard Temperature RangeÐ Extended Temperature Range

The Intel 82C55A is a high-performance, CHMOS version of the industry standard 8255A general purposeprogrammable I/O device which is designed for use with all Intel and most other microprocessors. It provides24 I/O pins which may be individually programmed in 2 groups of 12 and used in 3 major modes of operation.The 82C55A is pin compatible with the NMOS 8255A and 8255A-5.

In MODE 0, each group of 12 I/O pins may be programmed in sets of 4 and 8 to be inputs or outputs. InMODE 1, each group may be programmed to have 8 lines of input or output. 3 of the remaining 4 pins are usedfor handshaking and interrupt control signals. MODE 2 is a strobed bi-directional bus configuration.

The 82C55A is fabricated on Intel’s advanced CHMOS III technology which provides low power consumptionwith performance equal to or greater than the equivalent NMOS product. The 82C55A is available in 40-pinDIP and 44-pin plastic leaded chip carrier (PLCC) packages.

231256–1

Figure 1. 82C55A Block Diagram

231256–31

231256–2

Figure 2. 82C55A PinoutDiagrams are for pin reference only. Packagesizes are not to scale.

Page 13: Acionamentos de Motores de Passo

82C55A

Table 1. Pin Description

SymbolPin Number

Type Name and FunctionDip PLCC

PA3–0 1–4 2–5 I/O PORT A, PINS 0–3: Lower nibble of an 8-bit data output latch/

buffer and an 8-bit data input latch.

RD 5 6 I READ CONTROL: This input is low during CPU read operations.

CS 6 7 I CHIP SELECT: A low on this input enables the 82C55A to

respond to RD and WR signals. RD and WR are ignored

otherwise.

GND 7 8 System Ground

A1–0 8–9 9–10 I ADDRESS: These input signals, in conjunction RD and WR,

control the selection of one of the three ports or the control

word registers.

A1 A0 RD WR CS Input Operation (Read)

0 0 0 1 0 Port A - Data Bus

0 1 0 1 0 Port B - Data Bus

1 0 0 1 0 Port C - Data Bus

1 1 0 1 0 Control Word - Data Bus

Output Operation (Write)

0 0 1 0 0 Data Bus - Port A

0 1 1 0 0 Data Bus - Port B

1 0 1 0 0 Data Bus - Port C

1 1 1 0 0 Data Bus - Control

Disable Function

X X X X 1 Data Bus - 3 - State

X X 1 1 0 Data Bus - 3 - State

PC7–4 10–13 11,13–15 I/O PORT C, PINS 4–7: Upper nibble of an 8-bit data output latch/buffer and an 8-bit data input buffer (no latch for input). This port

can be divided into two 4-bit ports under the mode control. Each

4-bit port contains a 4-bit latch and it can be used for the control

signal outputs and status signal inputs in conjunction with ports

A and B.

PC0–3 14–17 16–19 I/O PORT C, PINS 0–3: Lower nibble of Port C.

PB0-7 18–25 20–22, I/O PORT B, PINS 0–7: An 8-bit data output latch/buffer and an 8-24–28 bit data input buffer.

VCC 26 29 SYSTEM POWER: a 5V Power Supply.

D7–0 27–34 30–33, I/O DATA BUS: Bi-directional, tri-state data bus lines, connected to35–38 system data bus.

RESET 35 39 I RESET: A high on this input clears the control register and all

ports are set to the input mode.

WR 36 40 I WRITE CONTROL: This input is low during CPU write

operations.

PA7–4 37–40 41–44 I/O PORT A, PINS 4–7: Upper nibble of an 8-bit data output latch/

buffer and an 8-bit data input latch.

NC 1, 12, No Connect23, 34

2

Page 14: Acionamentos de Motores de Passo

82C55A

82C55A FUNCTIONAL DESCRIPTION

General

The 82C55A is a programmable peripheral interfacedevice designed for use in Intel microcomputer sys-tems. Its function is that of a general purpose I/Ocomponent to interface peripheral equipment to themicrocomputer system bus. The functional configu-ration of the 82C55A is programmed by the systemsoftware so that normally no external logic is neces-sary to interface peripheral devices or structures.

Data Bus Buffer

This 3-state bidirectional 8-bit buffer is used to inter-face the 82C55A to the system data bus. Data istransmitted or received by the buffer upon executionof input or output instructions by the CPU. Controlwords and status information are also transferredthrough the data bus buffer.

Read/Write and Control Logic

The function of this block is to manage all of theinternal and external transfers of both Data andControl or Status words. It accepts inputs from theCPU Address and Control busses and in turn, issuescommands to both of the Control Groups.

Group A and Group B Controls

The functional configuration of each port is pro-grammed by the systems software. In essence, theCPU ‘‘outputs’’ a control word to the 82C55A. Thecontrol word contains information such as ‘‘mode’’,‘‘bit set’’, ‘‘bit reset’’, etc., that initializes the func-tional configuration of the 82C55A.

Each of the Control blocks (Group A and Group B)accepts ‘‘commands’’ from the Read/Write ControlLogic, receives ‘‘control words’’ from the internaldata bus and issues the proper commands to its as-sociated ports.

Control Group A - Port A and Port C upper (C7–C4)Control Group B - Port B and Port C lower (C3–C0)

The control word register can be both written andread as shown in the address decode table in thepin descriptions. Figure 6 shows the control wordformat for both Read and Write operations. Whenthe control word is read, bit D7 will always be a logic‘‘1’’, as this implies control word mode information.

Ports A, B, and C

The 82C55A contains three 8-bit ports (A, B, and C).All can be configured in a wide variety of functionalcharacteristics by the system software but each hasits own special features or ‘‘personality’’ to furtherenhance the power and flexibility of the 82C55A.

Port A. One 8-bit data output latch/buffer and one8-bit input latch buffer. Both ‘‘pull-up’’ and ‘‘pull-down’’ bus hold devices are present on Port A.

Port B. One 8-bit data input/output latch/buffer.Only ‘‘pull-up’’ bus hold devices are present on PortB.

Port C. One 8-bit data output latch/buffer and one8-bit data input buffer (no latch for input). This portcan be divided into two 4-bit ports under the modecontrol. Each 4-bit port contains a 4-bit latch and itcan be used for the control signal outputs and statussignal inputs in conjunction with ports A and B. Only‘‘pull-up’’ bus hold devices are present on Port C.

See Figure 4 for the bus-hold circuit configuration forPort A, B, and C.

3

Page 15: Acionamentos de Motores de Passo

82C55A

231256–3

Figure 3. 82C55A Block Diagram Showing Data Bus Buffer and Read/Write Control Logic Functions

*NOTE: 231256–4

Port pins loaded with more than 20 pF capacitance may not have their logic level guaranteed following a hardware reset.

Figure 4. Port A, B, C, Bus-hold Configuration

4

Page 16: Acionamentos de Motores de Passo

82C55A

82C55A OPERATIONAL DESCRIPTION

Mode Selection

There are three basic modes of operation that canbe selected by the system software:

Mode 0 Ð Basic input/outputMode 1 Ð Strobed Input/outputMode 2 Ð Bi-directional Bus

When the reset input goes ‘‘high’’ all ports will be setto the input mode with all 24 port lines held at a logic‘‘one’’ level by the internal bus hold devices (seeFigure 4 Note). After the reset is removed the82C55A can remain in the input mode with no addi-tional initialization required. This eliminates the needfor pullup or pulldown devices in ‘‘all CMOS’’ de-signs. During the execution of the system program,any of the other modes may be selected by using asingle output instruction. This allows a single82C55A to service a variety of peripheral deviceswith a simple software maintenance routine.

The modes for Port A and Port B can be separatelydefined, while Port C is divided into two portions asrequired by the Port A and Port B definitions. All ofthe output registers, including the status flip-flops,will be reset whenever the mode is changed. Modesmay be combined so that their functional definitioncan be ‘‘tailored’’ to almost any I/O structure. Forinstance; Group B can be programmed in Mode 0 tomonitor simple switch closings or display computa-tional results, Group A could be programmed inMode 1 to monitor a keyboard or tape reader on aninterrupt-driven basis.

231256–5

Figure 5. Basic Mode Definitions and Bus

Interface

231256–6

Figure 6. Mode Definition Format

The mode definitions and possible mode combina-tions may seem confusing at first but after a cursoryreview of the complete device operation a simple,logical I/O approach will surface. The design of the82C55A has taken into account things such as effi-cient PC board layout, control signal definition vs PClayout and complete functional flexibility to supportalmost any peripheral device with no external logic.Such design represents the maximum use of theavailable pins.

Single Bit Set/Reset Feature

Any of the eight bits of Port C can be Set or Resetusing a single OUTput instruction. This feature re-duces software requirements in Control-based appli-cations.

When Port C is being used as status/control for PortA or B, these bits can be set or reset by using the BitSet/Reset operation just as if they were data outputports.

5

Page 17: Acionamentos de Motores de Passo

82C55A

231256–7

Figure 7. Bit Set/Reset Format

Interrupt Control Functions

When the 82C55A is programmed to operate inmode 1 or mode 2, control signals are provided thatcan be used as interrupt request inputs to the CPU.The interrupt request signals, generated from port C,can be inhibited or enabled by setting or resettingthe associated INTE flip-flop, using the bit set/resetfunction of port C.

This function allows the Programmer to disallow orallow a specific I/O device to interrupt the CPU with-out affecting any other device in the interrupt struc-ture.

INTE flip-flop definition:

(BIT-SET)ÐINTE is SETÐInterrupt enable(BIT-RESET)ÐINTE is RESETÐInterrupt disable

Note:All Mask flip-flops are automatically reset duringmode selection and device Reset.

6

Page 18: Acionamentos de Motores de Passo

82C55A

Operating Modes

Mode 0 (Basic Input/Output). This functional con-figuration provides simple input and output opera-tions for each of the three ports. No ‘‘handshaking’’is required, data is simply written to or read from aspecified port.

Mode 0 Basic Functional Definitions:

# Two 8-bit ports and two 4-bit ports.

# Any port can be input or output.

# Outputs are latched.

# Inputs are not latched.

# 16 different Input/Output configurations are pos-sible in this Mode.

MODE 0 (BASIC INPUT)

231256–8

MODE 0 (BASIC OUTPUT)

231256–9

7

Page 19: Acionamentos de Motores de Passo

82C55A

MODE 0 Port Definition

A B GROUP A GROUP B

D4 D3 D1 D0 PORT APORT C Ý PORT B

PORT C(UPPER) (LOWER)

0 0 0 0 OUTPUT OUTPUT 0 OUTPUT OUTPUT

0 0 0 1 OUTPUT OUTPUT 1 OUTPUT INPUT

0 0 1 0 OUTPUT OUTPUT 2 INPUT OUTPUT

0 0 1 1 OUTPUT OUTPUT 3 INPUT INPUT

0 1 0 0 OUTPUT INPUT 4 OUTPUT OUTPUT

0 1 0 1 OUTPUT INPUT 5 OUTPUT INPUT

0 1 1 0 OUTPUT INPUT 6 INPUT OUTPUT

0 1 1 1 OUTPUT INPUT 7 INPUT INPUT

1 0 0 0 INPUT OUTPUT 8 OUTPUT OUTPUT

1 0 0 1 INPUT OUTPUT 9 OUTPUT INPUT

1 0 1 0 INPUT OUTPUT 10 INPUT OUTPUT

1 0 1 1 INPUT OUTPUT 11 INPUT INPUT

1 1 0 0 INPUT INPUT 12 OUTPUT OUTPUT

1 1 0 1 INPUT INPUT 13 OUTPUT INPUT

1 1 1 0 INPUT INPUT 14 INPUT OUTPUT

1 1 1 1 INPUT INPUT 15 INPUT INPUT

MODE 0 Configurations

231256–10

8

Page 20: Acionamentos de Motores de Passo

82C55A

MODE 0 Configurations (Continued)

231256–11

9

Page 21: Acionamentos de Motores de Passo

82C55A

MODE 0 Configurations (Continued)

231256–12

Operating Modes

MODE 1 (Strobed Input/Output). This functionalconfiguration provides a means for transferring I/Odata to or from a specified port in conjunction withstrobes or ‘‘handshaking’’ signals. In mode 1, Port Aand Port B use the lines on Port C to generate oraccept these ‘‘handshaking’’ signals.

Mode 1 Basic functional Definitions:

# Two Groups (Group A and Group B).

# Each group contains one 8-bit data port and one4-bit control/data port.

# The 8-bit data port can be either input or outputBoth inputs and outputs are latched.

# The 4-bit port is used for control and status of the8-bit data port.

10

Page 22: Acionamentos de Motores de Passo

82C55A

Input Control Signal Definition

STB (Strobe Input). A ‘‘low’’ on this input loadsdata into the input latch.

IBF (Input Buffer Full F/F)

A ‘‘high’’ on this output indicates that the data hasbeen loaded into the input latch; in essence, an ac-knowledgement. IBF is set by STB input being lowand is reset by the rising edge of the RD input.

INTR (Interrupt Request)

A ‘‘high’’ on this output can be used to interrupt theCPU when an input device is requesting service.INTR is set by the STB is a ‘‘one’’, IBF is a ‘‘one’’and INTE is a ‘‘one’’. It is reset by the falling edge ofRD. This procedure allows an input device to re-quest service from the CPU by simply strobing itsdata into the port.

INTE A

Controlled by bit set/reset of PC4.

INTE B

Controlled by bit set/reset of PC2.

231256–13

Figure 8. MODE 1 Input

231256–14

Figure 9. MODE 1 (Strobed Input)

11

Page 23: Acionamentos de Motores de Passo

82C55A

Output Control Signal Definition

OBF (Output Buffer Full F/F). The OBF output willgo ‘‘low’’ to indicate that the CPU has written dataout to the specified port. The OBF F/F will be set bythe rising edge of the WR input and reset by ACKInput being low.

ACK (Acknowledge Input). A ‘‘low’’ on this inputinforms the 82C55A that the data from Port A or PortB has been accepted. In essence, a response fromthe peripheral device indicating that it has receivedthe data output by the CPU.

INTR (Interrupt Request). A ‘‘high’’ on this outputcan be used to interrupt the CPU when an outputdevice has accepted data transmitted by the CPU.INTR is set when ACK is a ‘‘one’’, OBF is a ‘‘one’’and INTE is a ‘‘one’’. It is reset by the falling edge ofWR.

INTE A

Controlled by bit set/reset of PC6.

INTE B

Controlled by bit set/reset of PC2.231256–15

Figure 10. MODE 1 Output

231256–16

Figure 11. MODE 1 (Strobed Output)

12

Page 24: Acionamentos de Motores de Passo

82C55A

Combinations of MODE 1

Port A and Port B can be individually defined as input or output in Mode 1 to support a wide variety of strobedI/O applications.

231256–17

Figure 12. Combinations of MODE 1

Operating Modes

MODE 2 (Strobed Bidirectional Bus I/O).Thisfunctional configuration provides a means for com-municating with a peripheral device or structure on asingle 8-bit bus for both transmitting and receivingdata (bidirectional bus I/O). ‘‘Handshaking’’ signalsare provided to maintain proper bus flow discipline ina similar manner to MODE 1. Interrupt generationand enable/disable functions are also available.

MODE 2 Basic Functional Definitions:

# Used in Group A only.

# One 8-bit, bi-directional bus port (Port A) and a 5-bit control port (Port C).

# Both inputs and outputs are latched.

# The 5-bit control port (Port C) is used for controland status for the 8-bit, bi-directional bus port(Port A).

Bidirectional Bus I/O Control Signal Definition

INTR (Interrupt Request). A high on this output canbe used to interrupt the CPU for input or output oper-ations.

Output Operations

OBF (Output Buffer Full). The OBF output will go‘‘low’’ to indicate that the CPU has written data outto port A.

ACK (Acknowledge). A ‘‘low’’ on this input enablesthe tri-state output buffer of Port A to send out thedata. Otherwise, the output buffer will be in the highimpedance state.

INTE 1 (The INTE Flip-Flop Associated withOBF). Controlled by bit set/reset of PC6.

Input Operations

STB (Strobe Input). A ‘‘low’’ on this input loadsdata into the input latch.

IBF (Input Buffer Full F/F). A ‘‘high’’ on this outputindicates that data has been loaded into the inputlatch.

INTE 2 (The INTE Flip-Flop Associated with IBF).Controlled by bit set/reset of PC4.

13

Page 25: Acionamentos de Motores de Passo

82C55A

231256–18

Figure 13. MODE Control Word231256–19

Figure 14. MODE 2

231256–20

Figure 15. MODE 2 (Bidirectional)

NOTE:Any sequence where WR occurs before ACK, and STB occurs before RD is permissible.(INTR e IBF # MASK # STB # RD a OBF # MASK # ACK # WR)

14

Page 26: Acionamentos de Motores de Passo

82C55A

231256–21

Figure 16. MODE (/4 Combinations

15

Page 27: Acionamentos de Motores de Passo

82C55A

Mode Definition Summary

MODE 0 MODE 1 MODE 2

IN OUT IN OUT GROUP A ONLY

PA0 IN OUT IN OUT ÝPA1 IN OUT IN OUT ÝPA2 IN OUT IN OUT ÝPA3 IN OUT IN OUT ÝPA4 IN OUT IN OUT ÝPA5 IN OUT IN OUT ÝPA6 IN OUT IN OUT ÝPA7 IN OUT IN OUT ÝPB0 IN OUT IN OUT Ð

PB1 IN OUT IN OUT Ð

PB2 IN OUT IN OUT Ð

PB3 IN OUT IN OUT ÐMODE 0

PB4 IN OUT IN OUT ÐOR MODE 1

PB5 IN OUT IN OUT ÐONLY

PB6 IN OUT IN OUT Ð

PB7 IN OUT IN OUT Ð

PC0 IN OUT INTRB INTRB I/O

PC1 IN OUT IBFB OBFB I/O

PC2 IN OUT STBB ACKB I/O

PC3 IN OUT INTRA INTRA INTRA

PC4 IN OUT STBA I/O STBA

PC5 IN OUT IBFA I/O IBFA

PC6 IN OUT I/O ACKA ACKA

PC7 IN OUT I/O OBFA OBFA

Special Mode Combination Considerations

There are several combinations of modes possible.For any combination, some or all of the Port C linesare used for control or status. The remaining bits areeither inputs or outputs as defined by a ‘‘Set Mode’’command.

During a read of Port C, the state of all the Port Clines, except the ACK and STB lines, will be placedon the data bus. In place of the ACK and STB linestates, flag status will appear on the data bus in thePC2, PC4, and PC6 bit positions as illustrated byFigure 18.

Through a ‘‘Write Port C’’ command, only the Port Cpins programmed as outputs in a Mode 0 group canbe written. No other pins can be affected by a ‘‘WritePort C’’ command, nor can the interrupt enable flagsbe accessed. To write to any Port C output pro-grammed as an output in a Mode 1 group or to

change an interrupt enable flag, the ‘‘Set/Reset PortC Bit’’ command must be used.

With a ‘‘Set/Reset Port C Bit’’ command, any Port Cline programmed as an output (including INTR, IBFand OBF) can be written, or an interrupt enable flagcan be either set or reset. Port C lines programmedas inputs, including ACK and STB lines, associatedwith Port C are not affected by a ‘‘Set/Reset Port CBit’’ command. Writing to the corresponding Port Cbit positions of the ACK and STB lines with the‘‘Set/Reset Port C Bit’’ command will affect theGroup A and Group B interrupt enable flags, as illus-trated in Figure 18.

Current Drive Capability

Any output on Port A, B or C can sink or source 2.5mA. This feature allows the 82C55A to directly driveDarlington type drivers and high-voltage displaysthat require such sink or source current.

16

Page 28: Acionamentos de Motores de Passo

82C55A

Reading Port C Status

In Mode 0, Port C transfers data to or from the pe-ripheral device. When the 82C55A is programmed tofunction in Modes 1 or 2, Port C generates or ac-cepts ‘‘hand-shaking’’ signals with the peripheral de-vice. Reading the contents of Port C allows the pro-grammer to test or verify the ‘‘status’’ of each pe-ripheral device and change the program flow ac-cordingly.

There is no special instruction to read the status in-formation from Port C. A normal read operation ofPort C is executed to perform this function.

INPUT CONFIGURATION

D7 D6 D5 D4 D3 D2 D1 D0

I/O I/O IBFA INTEA INTRA INTEB IBFB INTRB

GROUP A GROUP B

OUTPUT CONFIGURATIONS

D7 D6 D5 D4 D3 D2 D1 D0

OBFA INTEA I/O I/O INTRA INTEB OBFB INTRB

GROUP A GROUP B

Figure 17a. MODE 1 Status Word Format

D7 D6 D5 D4 D3 D2 D1 D0

OBFA INTE1 IBFA INTE2 INTRA

GROUP A GROUP B

(Defined By Mode 0 or Mode 1 Selection)

Figure 17b. MODE 2 Status Word Format

Interrupt Enable Flag Position Alternate Port C Pin Signal (Mode)

INTE B PC2 ACKB (Output Mode 1) or STBB (Input Mode 1)

INTE A2 PC4 STBA (Input Mode 1 or Mode 2)

INTE A1 PC6 ACKA (Output Mode 1 or Mode 2

Figure 18. Interrupt Enable Flags in Modes 1 and 2

17

Page 29: Acionamentos de Motores de Passo

82C55A

ABSOLUTE MAXIMUM RATINGS*

Ambient Temperature Under BiasÀÀÀÀ0§C to a 70§CStorage Temperature ÀÀÀÀÀÀÀÀÀb 65§C to a 150§CSupply Voltage ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀb 0.5 to a 8.0V

Operating Voltage ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀa 4V to a 7V

Voltage on any InputÀÀÀÀÀÀÀÀÀÀGNDb2V to a 6.5V

Voltage on any Output ÀÀGNDb0.5V to VCC a 0.5V

Power Dissipation ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ1 Watt

NOTICE: This is a production data sheet. The specifi-cations are subject to change without notice.

*WARNING: Stressing the device beyond the ‘‘AbsoluteMaximum Ratings’’ may cause permanent damage.These are stress ratings only. Operation beyond the‘‘Operating Conditions’’ is not recommended and ex-tended exposure beyond the ‘‘Operating Conditions’’may affect device reliability.

D.C. CHARACTERISTICSTA e 0§C to 70§C, VCC e a5V g10%, GND e 0V (TA e b40§C to a85§C for Extended Temperture)

Symbol Parameter Min Max Units Test Conditions

VIL Input Low Voltage b0.5 0.8 V

VIH Input High Voltage 2.0 VCC V

VOL Output Low Voltage 0.4 V IOL e 2.5 mA

VOH Output High Voltage 3.0 V IOH e b2.5 mA

VCC b 0.4 V IOH e b100 mA

IIL Input Leakage Current g1 mA VIN e VCC to 0V

(Note 1)

IOFL Output Float Leakage Current g10 mA VIN e VCC to 0V

(Note 2)

IDAR Darlington Drive Current g2.5 (Note 4) mA Ports A, B, C

Rext e 500XVext e 1.7V

IPHL Port Hold Low Leakage Current a50 a300 mA VOUT e 1.0V

Port A only

IPHH Port Hold High Leakage Current b50 b300 mA VOUT e 3.0V

Ports A, B, C

IPHLO Port Hold Low Overdrive Current b350 mA VOUT e 0.8V

IPHHO Port Hold High Overdrive Current a350 mA VOUT e 3.0V

ICC VCC Supply Current 10 mA (Note 3)

ICCSB VCC Supply Current-Standby 10 mA VCC e 5.5V

VIN e VCC or GND

Port Conditions

If I/P e Open/High

O/P e Open Only

With Data Bus e

High/Low

CS e High

Reset e Low

Pure Inputs e

Low/High

NOTES:1. Pins A1, A0, CS, WR, RD, Reset.2. Data Bus; Ports B, C.3. Outputs open.4. Limit output current to 4.0 mA.

18

Page 30: Acionamentos de Motores de Passo

82C55A

CAPACITANCETA e 25§C, VCC eGND e 0V

Symbol Parameter Min Max Units Test Conditions

CIN Input Capacitance 10 pF Unmeasured plns

returned to GNDCI/O I/O Capacitance 20 pF

fc e 1 MHz(5)

NOTE:5. Sampled not 100% tested.

A.C. CHARACTERISTICSTA e 0§ to 70§C, VCC e a5V g10%, GND e 0V

TA e b40§C to a85§C for Extended Temperature

BUS PARAMETERS

READ CYCLE

Symbol Parameter82C55A-2

UnitsTest

Min MaxConditions

tAR Address Stable Before RDv 0 ns

tRA Address Hold Time After RDu 0 ns

tRR RD Pulse Width 150 ns

tRD Data Delay from RDv 120 ns

tDF RDu to Data Floating 10 75 ns

tRV Recovery Time between RD/WR 200 ns

WRITE CYCLE

Symbol Parameter82C55A-2

UnitsTest

Min MaxConditions

tAW Address Stable Before WRv 0 ns

tWA Address Hold Time After WRu 20 ns Ports A & B

20 ns Port C

tWW WR Pulse Width 100 ns

tDW Data Setup Time Before WRu 100 ns

tWD Data Hold Time After WRu 30 ns Ports A & B

30 ns Port C

19

Page 31: Acionamentos de Motores de Passo

82C55A

OTHER TIMINGS

Symbol Parameter82C55A-2 Units

TestMin Max

Conditions

tWB WR e 1 to Output 350 ns

tlR Peripheral Data Before RD 0 ns

tHR Peripheral Data After RD 0 ns

tAK ACK Pulse Width 200 ns

tST STB Pulse Width 100 ns

tPS Per. Data Before STB High 20 ns

tPH Per. Data After STB High 50 ns

tAD ACK e 0 to Output 175 ns

tKD ACK e 1 to Output Float 20 250 ns

tWOB WR e 1 to OBF e 0 150 ns

tAOB ACK e 0 to OBF e 1 150 ns

tSIB STB e 0 to IBF e 1 150 ns

tRIB RD e 1 to IBF e 0 150 ns

tRIT RD e 0 to INTR e 0 200 ns

tSIT STB e 1 to INTR e 1 150 ns

tAIT ACK e 1 to INTR e 1 150 ns

tWIT WR e 0 to INTR e 0 200 ns see note 1

tRES Reset Pulse Width 500 ns see note 2

NOTE:1. INTRu may occur as early as WRv.2. Pulse width of initial Reset pulse after power on must be at least 50 mSec. Subsequent Reset pulses may be 500 nsminimum. The output Ports A, B, or C may glitch low during the reset pulse but all port pins will be held at a logic ‘‘one’’ levelafter the reset pulse.

20

Page 32: Acionamentos de Motores de Passo

82C55A

WAVEFORMS

MODE 0 (BASIC INPUT)

231256–22

MODE 0 (BASIC OUTPUT)

231256–23

21

Page 33: Acionamentos de Motores de Passo

82C55A

WAVEFORMS (Continued)

MODE 1 (STROBED INPUT)

231256–24

MODE 1 (STROBED OUTPUT)

231256–25

22

Page 34: Acionamentos de Motores de Passo

82C55A

WAVEFORMS (Continued)

MODE 2 (BIDIRECTIONAL)

231256–26

Note:Any sequence where WR occurs before ACK AND STB occurs before RD is permissible.(INTR e IBF # MASK # STB # RD a OBF # MASK # ACK # WR)

WRITE TIMING

231256–27

READ TIMING

231256–28

A.C. TESTING INPUT, OUTPUT WAVEFORM

231256–29

A.C. Testing Inputs Are Driven At 2.4V For A Logic 1 And 0.45VFor A Logic 0 Timing Measurements Are Made At 2.0V For ALogic 1 And 0.8 For A Logic 0.

A.C. TESTING LOAD CIRCUIT

231256–30

*VEXT Is Set At Various Voltages During Testing To GuaranteeThe Specification. CL Includes Jig Capacitance.

23

Page 35: Acionamentos de Motores de Passo

44

Acionamento de motores elétricos CC Transformando comandos por software em movimentos de máquinas com motor CC.

s experiências com motores CC e de passo serão realizadas em duas aulas, sendo que em cada uma das aulas, a metade da turma fará experiência com motor CC e a outra metade com motor de passo, de modo que todos os alunos façam as experiências com os

dois tipos de motores.

Objetivo O objetivo destas duas experiências é que o aluno se familiarize com o acionamento por microprocessador de dois tipos importantes de motores elétricos utilizados em automação industrial. Os motores estão montados em dispositivos de movimentação linear com sensores de fim de curso. O aluno deverá exercitar a movimentação de um bloco deslizante, monitorando sua posição e evitando colisões nos finais de curso com o auxílio dos sensores.

Resumo Na primeira parte da aula, o aluno deverá familiarizar-se com o acionamento do motor elétrico CC, com a leitura dos sensores de fim de curso. Na segunda parte, o aluno deverá implementar um programa de controle manual de posicionamento do bloco deslizante utilizando as teclas, os LEDs e o display para mostrar a posição do motor.

Experiência

6

A

Page 36: Acionamentos de Motores de Passo

45

Procedimento experimental Estudo obrigatório. O aluno deverá ler o capítulo 5 do Manual de Referência sobre o Módulo de Interface do Motor CC, devendo compreender a arquitetura da interface, sua configuração de hardware, sua programação inicial e como fazer o motor CC se mover. O aluno deverá também ler o datasheet do 8255 que é

utilizado para se adquirir informações dos sensores nesta experiência e na anterior.

Conexões do sistema. Diversos cabos deverão ser conectados para a realização desta experiência. A Figura 29 do Manual de Referência mostra como conectar os cabos entre os módulos que compõe o kit, o módulo de interface com o motor de passo, o sistema de posicionamento linear e a fonte de alimentação. Siga atentamente o esquema mostrado na figura antes de ligar a alimentação.

Atenção:

Antes de ligar a fonte de alimentação certifique-se de que os cabos estão conectados corretamente. A inversão de algum cabo pode causar danos ao kit. Na dúvida consulte o professor.

Ligando o sistema. Depois de conferidas as ligações feitas pode-se ligar a fonte de alimentação. Logo após a ligação da fonte de alimentação, se as ligações estiverem corretas e o módulo de interface estiver operando corretamente o motor CC entrará em funcionamento.

Estando tudo correto, aparecerá também o prompt do monitor na tela do computador se este estiver conectado ao módulo processador do kit e em modo de terminal.

A primeira providência a se tomar é fazer o motor parar de girar pois isto pode causar colisão no final do curso do eixo. Isto pode ser feito usando-se o comando do monitor c> o d0 0. Este procedimento faz com que o motor CC não receba nenhuma tensão parando-o instantaneamente. O programa em C a ser implementado também deve

parar o motor CC nas primeiras linhas do programa principal em Linguagem C.

Ajuste a tensão de +12 Volts da fonte de alimentação antes de conectar qualquer cabo.

O endereço d0h depende da configuração de jumpers, veja no Manual de Referência.

Page 37: Acionamentos de Motores de Passo

46

Cuidado:

Não deixe os dedos perto do eixo do sistema de posicionamento linear pois o motor CC inicia o movimento assim que a alimentação do sistema for estabelecida.

Acionamento do motor CC. O motor CC pode ser acessado diretamente através do endereço d0h do módulo de interface com motor CC. O bit mais significativo do byte a ser escrito neste endereço controla a direção do motor enquanto que os outros bits controlam o nível de tensão da armadura do motor , o que faz com que o motor varie a velocidade de acordo com a variação desta tensão. Pode-se testar comandos do Monitor para o controle de movimento do motor conforme os exemplos abaixo:

Exemplos de controle de movimentos do motor CC:

C> o d0 0 (para o motor, tensão zero sobre a armadura) C> o d0 7f (velocidade máxima para o sentido horário) C> o d0 ff (velocidade máxima para o sentido anti-horário)

Leitura de sensores. A leitura dos sensores do sistema de posicionamento linear é feita através do 8255, que contém portas paralelas programáveis, presente no módulo de I/O. O Capítulo 2 do Manual de Referência contém os detalhes de como programar o 8255. Para a leitura dos sensores. este 8255 deve ser inicialmente programado para que a porta A opere para

entrada e a porta B para saída. A porta C não é utilizada e pode ser programada para qualquer direção. A direção default para qualquer uma das portas é entrada. Esta programação inicial pode ser feita por um comando direto do Monitor no endereço do registrador de controle do 8255 de acordo com o exemplo abaixo.

Programação do modo de operação do 8255 pelo Monitor:

C> o c3 90 (programa porta A para entrada e porta B para saída)

Os sensores estão conectados nos quatro bits menos significativos da porta A do 8255. Para ler o conteúdo desta porta pode-se usar o comando direto do Monitor conforme o exemplo abaixo.

Leitura dos sensores pelo Monitor:

C> i c0 (lê o valor da porta A do 8255) DATA = DF (o valor lido é indicado depois do =) C>

O endereço c3h depende da configuração de jumpers, veja no Manual de Referência.

Page 38: Acionamentos de Motores de Passo

47

O valor da porta A é mostrado na tela. Os quatro bits menos significativos contém o valor dos quatro sensores no momento da leitura. Os quatro bits mais significativos não contém informação nenhuma e deve ser descartados antes da interpretação dos bits menos significativos.

Para se isolar o status de um determinado sensor num programa em Linguagem C sugere-se a aplicação de uma função AND bit a bit com uma máscara que seja composta por 0s em todos os bits indesejáveis e 1 no bit desejável. O trecho de programa abaixo exemplifica este procedimento.

Exemplo para detectar se o sensor 1 foi ativado:

int s1; // variável para status do sensor 1 out (0xc3, 0x90); // programa o 8255 com a porta A para // entrada s1 = in(0xc0) & 0x01; // lê o sensor 1 (bit menos // significativo) e aplica a máscara // (00000001)b para isolar o bit if (s1 != 0) { // se for diferente de zero é porque // detectou . . . }

Leitura do encoder. Ao contrário do motor de passo cuja posição e velocidade podem ser determinados pela quantidade de pulsos e sua freqüência, respectivamente, dados para o movimento do motor, o motor CC necessita de um dispositivo externo para se saber a sua posição e velocidade. Neste laboratório utiliza-se um encoder para se determinar a posição do eixo do motor CC. Este encoder produz 500 pulsos por volta do motor de modo que contabilizando-se os pulsos deste encoder nos sentidos horário e anti-horário pode-se determinar a posição do eixo do motor num determinado instante.

A contabilização dos pulsos do encoder é feita através de um 8254 presente no módulo de interface do motor CC. Existem algumas rotinas de biblioteca que podem ser linkadas com o programa e chamadas para se ter a posição instantânea do eixo do motor.

Rotinas para acessar funções de encoder:

#include “mc85\encoder.h” // declaração das rotinas da // biblioteca para leitura do // encoder, também estão // declaradas as variáveis // globais necessárias.

/*--------------------------------------------------------- Função : init_encoder Finalidade : Inicializa o encoder para leitura. Entrada : Byte com a nibble mais significativa do endereço selecionado para a interface. Valores possíveis: 0x0c , 0x0d, 0x0e , ou 0x0f

Page 39: Acionamentos de Motores de Passo

48

Retorno : nenhum ----------------------------------------------------------*/ init_encoder (char endereco); /*--------------------------------------------------------- Função : read_encoder Finalidade : Lê o valor do encoder e armazena numa variável. long (4 bytes num vetor de char) Entrada : Byte com a nibble mais significativa do endereço selecionado para a interface. Retorno : valor do encoder com 32-bits numa variável long ----------------------------------------------------------*/ read_encoder (char endereco, char *encoder);

Nota:

Neste compilador não existe variável do tipo long. Variáveis do tipo long são implementadas em vetores de char com 4 bytes e são manipulados com rotinas de biblioteca como longadd(), longsub(), longmul(), longdiv(), dentre outras. Consulte o manual MC85.DOC sob o item LONGMATH para ver os detalhes de como utilizar as rotinas que tratam esta implementação particular de variáveis do tipo long.

Projeto. O aluno deverá implementar um programa para controlar a movimentação do bloco deslizante através das teclas do kit e mostrar a posição do eixo do motor no display LCD, da seguinte forma:

1. Ao se pressionar a tecla 1 o motor se move para a esquerda até ser detectado a entrada do sensor óptico. O movimento é parado e escreve-se mensagem no display LCD de que o sistema está pronto.

2. A se pressionar a tecla 2 o sistema inicia o movimento para a direita em velocidade baixa até que o sensor magnético pare de detectar a presença do bloco.

3. O movimento prossegue em velocidade alta até que seja detectado o sensor magnético da direita, quando então a velocidade deve ser reduzida para a velocidade baixa.

4. Ao ser detectado o sensor óptico da direita o motor deve inverter a sua direção sem parar e o mesmo procedimento anterior é repetido no sentido contrário.

5. A tecla 3 é usada para parar o sistema a qualquer momento.

6. Deve ser programada uma interrupção periódica de modo que a cada segundo seja feita uma leitura do encoder e atualizada uma variável global. No programa principal, dentro do loop de

Page 40: Acionamentos de Motores de Passo

49

controle esta variável global é lida e mostrada no canto inferior direito do display LCD.

Responder no relatório. O aluno deverá responder as seguintes perguntas no relatório. Recomenda-se testar as respostas durante a aula.

1. Mostre os cálculos realizados para determinar a programação dos timers do 8254 do módulo de I/O para gerar a interrupção?

2. Como seria possível determinar a velocidade de deslocamento do bloco com base na leitura do encoder ?

Page 41: Acionamentos de Motores de Passo

PMR2310 – Microprocessadores Aplicados à Automação Manual de Referência

Capítulo 5

Page 42: Acionamentos de Motores de Passo

versão de 14/02/03 26

5. Módulo de Interface com Motor DC O acionamento do motor DC é feito através de uma interface PWM (Pulse Width Modulation) com o 3524. Para que sejam obtidos diferentes níveis de tensão no motor, a informação digital do microprocessador é convertida para um sinal analógico que por sua vez é convertido num sinal PWM para o motor. Este módulo possui também um contador para um encoder incremental acoplado ao eixo do motor, com o qual pode-se medir a posição angular do eixo do motor. Este contador é implementado com um 8254 que pode contar com 16-bits para cada direção. Para que se possa utilizar mais bits para determinação da posição angular do motor este módulo gera um pedido de interrupção cada vez que um contador de 16-bits do 8254 estoura. A implementação de um contador de 32-bits (ou mais) para a posição angular do eixo do motor na memória do módulo processador é feita por software. A Figura 27 mostra o diagrama de blocos deste módulo.

5.1 Pontos de Teste e Jumpers de Configuração Este módulo possui um único ponto de teste para auxílio na verificação dos sinais com o osciloscópio. O ponto TP1 é o terra digital do módulo. Os outros sinais de interesse devem ser monitorados colocando-se a ponta de prova do osciloscópio diretamente sobre o pino do circuito integrado.

Os jumpers JP1 a JP4 configuram o tipo de módulo processador, se 8085 ou se 68HC11, Tabela XVII, enquanto que os jumpers JP5 a JP8 configuram as faixas de endereços de acesso do módulo, Tabela XVIII. A Figura 28 mostra a posição dos jumpers na placa do módulo.

Tabela XVII. Configuração do tipo de microprocessador/ microcontrolador

microprocessador/microcontrolador JP1 JP2 JP3 JP4

8085 ON OFF ON OFF

8052 ou 68HC11 OFF ON OFF ON

Tabela XVIII. Configuração das faixas de endereços de I/O

Faixa de endereços JP5 JP6 JP7 JP8

C0H - CFH ON OFF OFF OFF

D0H - DFH OFF ON OFF OFF

E0H - EFH OFF OFF ON OFF

F0H - FFH OFF OFF OFF ON

A função de cada endereço é determinada pelos bits A0 a A3 de endereço adicionalmente aos bits A4 a A7

Buffers p/barramento

externo

Jumpers deconfiguração de

endereços etipo de micro-processador

Decodificadorde fases do

encorer

Encoder

Pedido deinterrupção

Clock do sistema

8254

Registradorde 8-bits

Fase A

Fase B

ConversorD/A

3524(PWM)

Driver depotência Motor DC

Figura 27. Diagrama de blocos do módulo de controle de motor DC

Page 43: Acionamentos de Motores de Passo

PMR2310 – Microprocessadores aplicados à automação 27

determinados pelos jumpers JP5 a JP8. A Tabela XIX mostra a função de cada endereço na interface. O registrador de controle da interface está no endereço n0H (onde n pode ser C, D, E ou F dependendo dos jumpers JP5 a JP8) enquanto que o timer 8254 ocupa os endereços n4H a n7H (onde n pode ser C, D, E ou F dependendo dos jumpers JP5 a JP8).

Tabela XIX. Funções dos endereços internos dos módulo

Endereços Dispositivo Função

A3 A2 A1 A0

0 0 0 0 conversor D/A

escrita no conversor D/A da interface para o PWM

0 1 0 0 8254 leitura/escrita no Contador 0

0 1 0 1 8254 leitura/escrita no Contador 1

0 1 1 0 8254 leitura/escrita no Contador 2

0 1 1 1 8254 leitura/escrita no Registrador de Controle

Este módulo pode utilizar as interrupções INT0 e INT1 para tratar o estouro do contador do encoder. As interrupções a serem utilizadas podem ser configuradas pelos jumpers JP9 e JP10. O jumper JP9 indica a utilização da interrupção INT 0 do barramento (interrupção 5.5 do módulo processador 8085) enquanto que o jumper JP10 indica a utilização da interrupção INT 1 do barramento (interrupção 6.5 do módulo processador 8085). Ocorre um pedido de interrupção INT0 quando estoura o contador para o sentido horário e ocorre um pedido de interrupção INT1 quando estoura o contador para o sentido anti-horário.

5.2 Sinais nos Conectores O conector P1, flat-cable de 50 pinos, conecta o módulo de motor de passo ao barramento comum a todos os módulos, podendo ser conectado a qualquer módulo com conector livre.

O conector P2, do tipo Molex de 3 pinos, conecta o módulo à fonte de alimentação de +12V e -12V. O Conector P3, do tipo Molex de 4 pinos é a entrada para os sinais do encoder, enquanto que o conector P4 é a saída para o motor DC.

As posições dos conectores no módulo estão indicadas na Figura 28.

5.3 Programação e Controle da Interface

5.3.1 Controle do motor DC O motor DC utilizado no Sistema de Posicionamento Linear é de tensão nominal de 12V. Para o controle da velocidade de seu movimento este módulo utiliza um driver PWM com um conversor D/A de 8-bits, dos quais apenas 7-bits são utilizados e o oitavo bit, o mais significativo, é utilizado para indicar a direção do movimento.

1

LED Power On

P4

P1

JP2

TP1 GND

JP1

JP4JP3JP5

JP6

JP7

JP8

1 P2

P3

1

JP10

JP9

Figura 28. Jumpers de configuração e ponto de teste e posição dos conectores

Page 44: Acionamentos de Motores de Passo

versão de 14/02/03 28

Sendo assim, a faixa de tensão entre 0V e +12V é dividida em 127 intervalos e a faixa de tensão entre -12V e 0V é dividida em mais 127 intervalos. Para esta interface, existem dois valores que correspondem a 0V: os valores que correspondem aos 7-bits iguais a zero com o bit de sinal igual a zero e com o bit de sinal igual a 1.

Para que o motor DC receba um certo nível de tensão deve-se escrever um valor de 8-bits no endereço n0h, onde n depende da configuração dos jumpers JP5 a JP8.

5.3.2 Leitura do encoder A contagem de pulsos do encoder é feita por dois contadores do 8254 de 16-bits cada, um para contagem de pulsos no sentido horário e outro para contagem de pulsos no sentido anti-horário. A posição efetiva do eixo do motor é obtida pela diferença entre os dois contadores. No entanto, os contadores do 8254 são regressivos e devem ser inicializados com uma constante de valor alto. Além disso, deve-se levar em conta que para a carga da constante no contador do 8254 necessita de um pulso de clock (trata-se de uma carga síncrona).

A contagem dos pulsos de encoder é feita com cada um dos contadores do 8254 no modo 2. O primeiro pulso de encoder é usado para carregar o valor no contador do 8254, desta forma, como a contagem é decrescente, deve-se subtrair 1 da leitura do encoder toda vez que este é lido. Após a subtração, complementa-se o valor obtido para se ter o valor dos pulsos de encoder se a contagem fosse crescente. Este valor deve então ser gravado em alguma variável interna do programa.

No final da contagem de cada um dos contadores do 8254 é gerado um pulso de interrupção para o microprocessador para avisá-lo do estouro da contagem. Esta interrupção pode ser utilizada para incrementar um outro contador por software de modo a aumentar o número de bits do contador do encoder.

No caso de contagem de 32 bits do encoder, com o contador do 8254 programado no modo 2, a saída do contador vai para 0 quando a contagem chega a 0. Ou seja, a interrupção ocorre quando o valor dos pulsos já estourou. Isto poderia acarretar um problema pois corresponderia ao incremento em 1 da palavra mais significativa da contagem do encoder quando a palavra menos significativa vale FFFFh, e não quando esta passa de FFFFh para 0000h. No entanto, como existe uma correção nos valores do contador que subtrai 1 do valor lido, o que acontece é que quando a saída do contador do 8254 vai para 0, a contagem real (sem o desconto) vai de 0001h para 0000h mas o valor da variável interna do programa que armazena a conta (com a subtração) vai de FFFFh para 0000h (que é o complemento de [0001h – 1h], e complemento de [0000h – 1]).

Desta forma fazendo-se a subtração de 1 do valor a cada leitura, resolve-se o problema da interrupção na hora certa, e do desconto do primeiro pulso.

5.4 Conexões do Módulo de Motor CC com o sistema A Figura 29 mostra as conexões entre o módulo de motor CC, os outros módulos do kit, a fonte de alimentação e o sistema de posicionamento.

Page 45: Acionamentos de Motores de Passo

PMR2310 – Microprocessadores aplicados à automação 29

Figure 29. Conexões do módulo de motor CC com outros módulos do sistema