You are on page 1of 45

P M R 2 3 1 0

L A B O R A T R I O

Experincia

Acionamento de motores eltricos de passo


Transformando comandos por software em movimentos de mquinas com motor de passo

s experincias com motores de passo (Experincia 5) e com motores CC (Experincia 6) sero realizadas em duas aulas, sendo que em cada uma das aulas, a metade da turma far experincia com motor de passo e a outra metade com motor CC, de modo que todos os alunos faam as experincias com os dois tipos de motores. Caso no 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 relatrios devero ser entregues por grupo.

Objetivo
O objetivo destas duas experincias que o aluno se familiarize com o acionamento por microprocessador de dois tipos importantes de motores eltricos utilizados em automao industrial. Os motores esto montados em dispositivos de movimentao linear com sensores de fim de curso. O aluno dever exercitar a movimentao de um bloco deslizante, monitorando sua posio e evitando colises nos finais de curso com o auxlio dos sensores.

Resumo
Na primeira parte da aula, o aluno dever familiarizar-se com o acionamento do motor eltrico 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 posio do motor.

39

Procedimento experimental
O aluno dever ler o captulo 4 do Manual de Referncia sobre o Mdulo de Interface do Motor de Passo, devendo compreender a arquitetura da interface, sua configurao de hardware, sua programao inicial e como utilizar o Registrador de Controle para fazer o motor de passo se mover. O aluno dever tambm ler o datasheet do 8255 que utilizado para se adquirir informaes dos sensores nesta experincia e na prxima.
Estudo obrigatrio.

Diversos cabos devero ser conectados para a realizao desta experincia. A Ajuste a tenso de Figura 26 do Manual de Referncia mostra como +12 Volts da fonte conectar os cabos entre os mdulos que compe o de alimentao antes de conectar kit, o mdulo de interface com o motor de passo, o qualquer cabo. sistema de posicionamento linear e a fonte de alimentao. Siga atentamente o esquema mostrado na figura antes de ligar a alimentao.
Conexes do sistema.

Ateno:

Antes de ligar a fonte de alimentao certifique-se de que os cabos esto conectados corretamente. A inverso de algum cabo pode causar danos ao kit. Na dvida consulte o professor.
Ligando o sistema. Depois de conferidas as ligaes feitas pode-se ligar a fonte de alimentao. Logo aps a ligao da fonte de alimentao, se as ligaes estiverem corretas o eixo do motor dever estar travado.

Nota:

Verifique com a mo que o eixo do motor est travado segurando no eixo e fazendo pequena fora para cada lado. Estando tudo correto, aparecer tambm o prompt do monitor na tela do computador se este estiver conectado ao mdulo processador do kit e em modo de terminal.
O endereo d0h depende da configurao de jumpers, veja no Manual de Referncia.

A primeira providncia 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 necessrio para que o driver no se aquea excessivamente. O programa em C a ser implementado tambm deve desligar o driver nas primeiras linhas do programa principal em

40

Linguagem C. Depois o driver ser ligado para a movimentao do motor.


Nota:

Verifique com a mo que o eixo do motor est destravado segurando no eixo e fazendo pequena fora para cada lado. Se conseguir moviment-lo, o comando acima funcionou. Nesta experincia, toda vez que o motor for mantido em repouso por um longo perodo 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 seqncia de comandos dada no item 4.3. do Manual de Referncia. O mdulo de interface com o motor de passo tambm possui um 8254 (timers programveis) que usado para movimentar o motor. Este 8254 deve ser programado para sua operao especfica de controle do motor de passo. O trecho de comandos do Monitor abaixo programa os timers do mdulo para movimentao do motor na freqncia de 400 pulsos por segundo (400 Hz) dando 20 voltas. Comandos para programar timers:
C> C> C> C> C> C> o o o o o o d0 d7 d4 d4 d7 d5 0 36 00 03 56 0a (desliga o driver) (programa timer 0 p/ modo 3 binrio) (constante para 4 kHz no timer 0) (corresponde a 300h) (programa timer 1 p/ modo 3 binrio) (constante para 400Hz no timer 1, corresponde a ah, p/ 200Hz 14h, p/ 500Hz 8h) (programa timer 2 p/ modo 5 binrio) (constante para 20 voltas no timer 2) (corresponde a fa0h)

C> o d7 ba C> o d6 a0 C> o d6 f

Para disparar o movimento do motor de passo utilizado o Registrador de Controle do mdulo de interface. De acordo com o Manual de Referncia 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 direo de movimento do motor de passo, zero para movimentar no sentido horrio e 1 para movimentar no sentido anti-horrio. 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 horrio e depois no sentido anti-horrio.

41

Comandos para controlar o movimento do motor de passo:


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

Leitura de sensores. A leitura dos sensores do sistema de posicionamento linear feita atravs do 8255, que contm portas paralelas programveis, presente no mdulo de I/O. O Captulo 2 do Manual de Referncia contm 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 sada. A porta C no O endereo c3h utilizada e pode ser programada para qualquer depende da direo. A direo default para qualquer uma das configurao de portas entrada. Esta programao inicial pode ser jumpers, veja no feita por um comando direto do Monitor no Manual de endereo do registrador de controle do 8255 de Referncia. acordo com o exemplo abaixo. Programao do modo de operao do 8255 pelo Monitor:
C> o c3 90 (programa porta A para entrada e porta B para sada)

Os sensores esto conectados nos quatro bits menos significativos da porta A do 8255. Para ler o contedo desta porta pode-se usar o comando direto do Monitor conforme o exemplo abaixo.
Leitura dos sensores pelo Monitor:
C> i c0 DATA = DF C> (l o valor da porta A do 8255) (o valor lido indicado depois do =)

O valor da porta A mostrado na tela. Os quatro bits menos significativos contm o valor dos quatro sensores no momento da leitura. Os quatro bits mais significativos no contm informao nenhuma e deve ser descartados antes da interpretao dos bits menos significativos. Para se isolar o status de um determinado sensor num programa em Linguagem C sugere-se a aplicao de uma funo AND bit a bit com uma mscara que seja composta por 0s em todos os bits indesejveis e 1 no bit desejvel. O trecho de programa abaixo exemplifica este procedimento.

42

Exemplo para detectar se o sensor 1 foi ativado:


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

Projeto.

O aluno dever implementar um programa para controlar a movimentao do bloco deslizante atravs 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 magntico pare de detectar a presena do bloco.
3. O movimento prossegue em velocidade alta at que seja

detectado o sensor magntico da direita, quando ento a velocidade deve ser reduzida para a velocidade baixa.
4. Ao ser detectado o sensor ptico da direita o motor deve

inverter a sua direo sem parar e o mesmo procedimento anterior repetido no sentido contrrio.
5. A tecla 3 usada para parar o sistema a qualquer momento.
Responder no relatrio. O aluno dever responder as seguintes perguntas no relatrio. Recomenda-se testar as respostas durante a aula.

1. Qual a programao dos timers do 8254 para mover o motor

de passo 25 voltas com velocidade de 150 pulsos por segundo?


2. Qual a freqncia mxima que o motor de passo pode partir

estando parado?
3. Por que programado o valor 90h no endereo c3h? Explique

o significado do 90h.

43

PMR2310 Microprocessadores Aplicados Automao


Manual de Referncia Captulo 4

4. Mdulo de Interface com Motor de Passo


O acionamento do motor de passo feito atravs da programao de um 8254 (Timer Programvel) presente na interface com motor de passo. A Figura 22 mostra o diagrama de blocos deste mdulo. Conforme esta figura o Timer 0 deve ser programado para reduzir a freqncia do clock do sistema (SYSCLOCK = 3,072 MHz) para uma freqncia 2 vezes maior que a velocidade mxima de movimentao do motor de passo. A sada do Timer 0 ligada diretamente ao clock do Timer 1 com o qual pode-se ajustar a freqncia de acionamento do motor de passo, ou seja, a taxa de passos por segundo. Atravs da variao desta freqncia durante o movimento, o motor pode ser acelerado ou desacelerado. O Timer 2 em conjunto com o flip-flop e com as portas lgicas permite a definio do nmero de pulsos que dever ser enviado para o motor.

8254 SYSCLOCK (clock do sistema)

Timer 0 (modo 3)
gate Vcc

Timer 1 (modo 3)
gate Vcc

Timer 2 (modo 5)
gate

&

CLOLK

D CLK CLR SYSRESET

ENABLE

&

Controlador de motor de passo (L297)

Driver de potncia (L298)

Motor de passo

DIREO

Via de dados do sistema

Registrador de controle

Figura 22. Diagrama de blocos do mdulo de controle de motor de passo Os outros comandos para a interface so dados atravs do registrador de comandos. Os comandos disponveis so os seguintes: habilita/desabilita acionamento do motor controle de direo 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.

PMR2310 Microprocessadores aplicados automao

21

Endereo: n0H* D7
DIR

D6
x

D5
x

D4
CLR

D3
DISP

D2
EN

D1
GT1

D0
H/F

Modo Half ou Full step 0 Full step 1 Half step Gate do Timer 1 0 para Timer 1 habilita Timer Habilita Driver do motor 0 desabilita driver 1 habilita driver Dispara movimento quando em HIGH, deve retornar para LOW pelo menos um ciclo de clock antes de ser redisparado Limpa o flip-flop de contagem de pulsos 0 limpa o flip-flop 1 permite a contagem Direo de rotao do motor 0 sentido horrio 1 sentido anti-horrio * n pode ser C, D, E, ou F, depende dos jumpers de seleo de endereos da interface

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

4.1 Pontos de Teste e Jumpers de Configurao


Este mdulo possui dois pontos de teste para verificao dos sinais com o osciloscpio. O ponto TP1 o sinal de seleo do 82C54 (Timers programveis) e o ponto TP2 o terra para conexo do terra do osciloscpio. Os jumpers JP1 a JP4 configuram o tipo de mdulo processador, se 8085 ou se 68HC11, Tabela XIV, enquanto que os jumpers JP5 a JP8 configuram as faixas de endereos de acesso do mdulo, Tabela XV. A Figura 24 mostra a posio dos jumpers na placa do mdulo. Tabela XIV. Configurao do tipo de microprocessador/ microcontrolador
microprocessador/microcontrolador 8085 8052 ou 68HC11 JP1 ON OFF JP2 OFF ON JP3 ON OFF JP4 OFF ON

Tabela XV. Configurao das faixas de endereos de I/O


Faixa de endereos C0H - CFH D0H - DFH E0H - EFH F0H - FFH JP5 ON OFF OFF OFF JP6 OFF ON OFF OFF JP7 OFF OFF ON OFF JP8 OFF OFF OFF ON

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

22

verso de 14/02/03

Tabela XVI. Funes dos endereos internos do mdulo


Endereos A3 0 0 0 0 0 A2 0 1 1 1 1 A1 0 0 0 1 1 A0 0 0 1 0 1 registrador 8254 8254 8254 8254 escrita no registrador de controle da interface leitura/escrita no Contador 0 leitura/escrita no Contador 1 leitura/escrita no Contador 2 leitura/escrita no Registrador de Controle Dispositivo Funo

4.2 Sinais dos Conectores


O conector P1, flat-cable de 50 pinos, conecta o mdulo de motor de passo ao barramento comum a todos os mdulos, podendo ser conectado a qualquer mdulo com conector livre. Os conectores P4 e P5 so para conexo ao motor de passo e fonte de alimentao de +12V, respectivamente. O conector P4 do tipo Molex com 8 pinos, enquanto que o conector P5 do tipo Molex com 2 pinos. As posies dos conectores no mdulos esto indicadas na Figura 24.

TP2 GND TP1 /CS82C54

P1 ajuste de corrente
JP1 JP2 JP3 JP4 JP5 JP6 JP7 JP8 1 1

LED Power On

P4

P5

Figura 24. Jumpers de configurao e pontos de teste e posio dos conectores

4.3 Programao e Controle da Interface


A programao da interface com o motor de passo requer uma srie de procedimentos para a sua operao correta. Os Timers do 8254 so conectados de uma maneira fixa pelo hardware, descrita anteriormente, e requerem uma programao dos modos adequados para o controle do motor de passo. As funes de cada Timer so as seguintes: Timer 0 - reduz a freqncia do clock do sistema para um valor de at duas vezes a freqncia mxima do motor de passo.

PMR2310 Microprocessadores aplicados automao

23

Timer 1 - ajusta a freqncia de rotao do motor, o valor mnimo 2, ou seja, a freqncia sempre dividida no mnimo 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 inicializao da interface. Para iniciar o movimento deve-se escrever no registrador de controle o bit D3=HIGH. Aps a escrita deste bit no registrador de controle o motor de passo inicia o movimento com a freqncia programada no Timer 1 com o nmero 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.

Inicio

limpa o flip-flop de contagem de pulsos (bit D4)

programa o modo do Timer 0

programa a constante de reduo de freq. do Timer 0

habilita o driver do motor de passo (bit D2)

programa o modo do Timer 1

programa a constante de velocidade do Timer1

reseta o bit de disparo do movimento (bit D3)

programa o modo do Timer 2

programa a constante de nmero de pulsos do Timer 2

Fim

Figura 25. Procedimento de inicializao da interface O movimento do motor de passo independente de qualquer comando por software, uma vez iniciado o movimento o mesmo interrompido se ocorrer uma das situaes abaixo: O motor completa o movimento com o nmero 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 suspenso 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 direo do movimento pode ser invertida com o motor em movimento atravs da escrita no registrador de comando. Setando o bit D7=LOW o motor move-se em sentido horrio, com D7=HIGH o motor move-se em sentido anti-horrio. Para se determinar se o movimento do motor de passo chegou ao fim pode-se ler o valor do Timer 2 e verificar duas situaes: Se o valor zero, o que indica que o nmero de pulsos programado foi atingido. Se o valor prximo de FFFFH, o que indica que o nmero de pulsos programado foi atingido e como o Timer 1 no foi interrompido a contagem to Timer 2 prosseguiu. Note que apesar da contagem do Timer 2 prosseguir o mesmo no fornecer valor na sada at ser reprogramado.

4.4 Conexes do Mdulo de Motor de Passo com o sistema


A Figura 26 mostra as conexes entre o mdulo de motor de passo, os outros mdulos do kit, a fonte de alimentao e o sistema de posicionamento.

24

verso de 14/02/03

Figure 26. Conexes do Mdulo do Motor de Passo com os outros mdulos do sistema

PMR2310 Microprocessadores aplicados automao

25

82C55A CHMOS PROGRAMMABLE PERIPHERAL INTERFACE


Y

Compatible with all Intel and Most Other Microprocessors High Speed Zero Wait State Operation with 8 MHz 8086 88 and 80186 188 24 Programmable I O Pins Low Power CHMOS Completely TTL Compatible

Y Y Y

Control Word Read-Back Capability Direct Bit Set Reset Capability 2 5 mA DC Drive Capability on all I O Port Outputs Available in 40-Pin DIP and 44-Pin PLCC Available in EXPRESS Standard Temperature Range Extended Temperature Range

Y Y Y Y Y

The Intel 82C55A is a high-performance CHMOS version of the industry standard 8255A general purpose programmable I O device which is designed for use with all Intel and most other microprocessors It provides 24 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 In MODE 1 each group may be programmed to have 8 lines of input or output 3 of the remaining 4 pins are used for handshaking and interrupt control signals MODE 2 is a strobed bi-directional bus configuration The 82C55A is fabricated on Intels advanced CHMOS III technology which provides low power consumption with performance equal to or greater than the equivalent NMOS product The 82C55A is available in 40-pin DIP and 44-pin plastic leaded chip carrier (PLCC) packages

231256 31

231256 1

Figure 1 82C55A Block Diagram


231256 2

Figure 2 82C55A Pinout


Diagrams are for pin reference only Package sizes are not to scale

October 1995

Order Number 231256-004

82C55A

Table 1 Pin Description Symbol PA30 RD CS Pin Number Dip PLCC 1 4 5 6 25 6 7 Type I O I I Name and Function PORT A PINS 0 3 Lower nibble of an 8-bit data output latch buffer and an 8-bit data input latch READ CONTROL This input is low during CPU read operations CHIP SELECT A low on this input enables the 82C55A to respond to RD and WR signals RD and WR are ignored otherwise System Ground 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 0 0 1 1 0 0 1 1 X X PC74 10 13 11 1315 I O A0 0 1 0 1 0 1 0 1 X X RD 0 0 0 0 1 1 1 1 X 1 WR 1 1 1 1 0 0 0 0 X 1 CS 0 0 0 0 0 0 0 0 1 0 Input Operation (Read) Port A - Data Bus Port B - Data Bus Port C - Data Bus Control Word - Data Bus Output Operation (Write) Data Bus - Port A Data Bus - Port B Data Bus - Port C Data Bus - Control Disable Function Data Bus - 3 - State Data Bus - 3 - State

GND A10

7 8 9

8 910

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 PORT C PINS 0 3 Lower nibble of Port C PORT B PINS 0 7 An 8-bit data output latch buffer and an 8bit data input buffer SYSTEM POWER a 5V Power Supply DATA BUS Bi-directional tri-state data bus lines connected to system data bus RESET A high on this input clears the control register and all ports are set to the input mode WRITE CONTROL This input is low during CPU write operations PORT A PINS 4 7 Upper nibble of an 8-bit data output latch buffer and an 8-bit data input latch No Connect

PC03 PB0-7 VCC D70 RESET WR PA74 NC

14 17 18 25 26 27 34 35 36 37 40

1619 2022 2428 29 3033 3538 39 40 4144 1 12 23 34

I O I O

I O I I I O

82C55A
Each of the Control blocks (Group A and Group B) accepts commands from the Read Write Control Logic receives control words from the internal data bus and issues the proper commands to its associated 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 and read as shown in the address decode table in the pin descriptions Figure 6 shows the control word format for both Read and Write operations When the 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 functional characteristics by the system software but each has its own special features or personality to further enhance the power and flexibility of the 82C55A Port A One 8-bit data output latch buffer and one 8-bit input latch buffer Both pull-up and pulldown 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 Port B Port C One 8-bit data output latch buffer and one 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 Only pull-up bus hold devices are present on Port C See Figure 4 for the bus-hold circuit configuration for Port A B and C

82C55A FUNCTIONAL DESCRIPTION


General The 82C55A is a programmable peripheral interface device designed for use in Intel microcomputer systems Its function is that of a general purpose I O component to interface peripheral equipment to the microcomputer system bus The functional configuration of the 82C55A is programmed by the system software so that normally no external logic is necessary to interface peripheral devices or structures Data Bus Buffer This 3-state bidirectional 8-bit buffer is used to interface the 82C55A to the system data bus Data is transmitted or received by the buffer upon execution of input or output instructions by the CPU Control words and status information are also transferred through the data bus buffer Read Write and Control Logic The function of this block is to manage all of the internal and external transfers of both Data and Control or Status words It accepts inputs from the CPU Address and Control busses and in turn issues commands to both of the Control Groups Group A and Group B Controls The functional configuration of each port is programmed by the systems software In essence the CPU outputs a control word to the 82C55A The control word contains information such as mode bit set bit reset etc that initializes the functional configuration of the 82C55A

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

82C55A

82C55A OPERATIONAL DESCRIPTION


Mode Selection There are three basic modes of operation that can be selected by the system software Mode 0 Mode 1 Mode 2 Basic input output Strobed Input output Bi-directional Bus

When the reset input goes high all ports will be set to the input mode with all 24 port lines held at a logic one level by the internal bus hold devices (see Figure 4 Note) After the reset is removed the 82C55A can remain in the input mode with no additional initialization required This eliminates the need for pullup or pulldown devices in all CMOS designs During the execution of the system program any of the other modes may be selected by using a single output instruction This allows a single 82C55A to service a variety of peripheral devices with a simple software maintenance routine The modes for Port A and Port B can be separately defined while Port C is divided into two portions as required by the Port A and Port B definitions All of the output registers including the status flip-flops will be reset whenever the mode is changed Modes may be combined so that their functional definition can be tailored to almost any I O structure For instance Group B can be programmed in Mode 0 to monitor simple switch closings or display computational results Group A could be programmed in Mode 1 to monitor a keyboard or tape reader on an interrupt-driven basis

231256 6

Figure 6 Mode Definition Format The mode definitions and possible mode combinations may seem confusing at first but after a cursory review of the complete device operation a simple logical I O approach will surface The design of the 82C55A has taken into account things such as efficient PC board layout control signal definition vs PC layout and complete functional flexibility to support almost any peripheral device with no external logic Such design represents the maximum use of the available pins Single Bit Set Reset Feature Any of the eight bits of Port C can be Set or Reset using a single OUTput instruction This feature reduces software requirements in Control-based applications
231256 5

Figure 5 Basic Mode Definitions and Bus Interface

When Port C is being used as status control for Port A or B these bits can be set or reset by using the Bit Set Reset operation just as if they were data output ports 5

82C55A

Interrupt Control Functions When the 82C55A is programmed to operate in mode 1 or mode 2 control signals are provided that can 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 resetting the associated INTE flip-flop using the bit set reset function of port C This function allows the Programmer to disallow or allow a specific I O device to interrupt the CPU without affecting any other device in the interrupt structure INTE flip-flop definition
231256 7

Figure 7 Bit Set Reset Format

(BIT-SET) INTE is SET Interrupt enable (BIT-RESET) INTE is RESET Interrupt disable Note All Mask flip-flops are automatically reset during mode selection and device Reset

82C55A
Mode 0 Basic Functional Definitions  Two 8-bit ports and two 4-bit ports

Operating Modes Mode 0 (Basic Input Output) This functional configuration provides simple input and output operations for each of the three ports No handshaking is required data is simply written to or read from a specified port

   

Any port can be input or output Outputs are latched Inputs are not latched 16 different Input Output configurations are possible in this Mode

MODE 0 (BASIC INPUT)

231256 8

MODE 0 (BASIC OUTPUT)

231256 9

82C55A

MODE 0 Port Definition A D4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 D3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 D1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 B D0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 GROUP A PORT A OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT INPUT INPUT INPUT INPUT INPUT INPUT INPUT INPUT PORT C (UPPER) OUTPUT OUTPUT OUTPUT OUTPUT INPUT INPUT INPUT INPUT OUTPUT OUTPUT OUTPUT OUTPUT INPUT INPUT INPUT INPUT GROUP B PORT B 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 OUTPUT OUTPUT INPUT INPUT OUTPUT OUTPUT INPUT INPUT OUTPUT OUTPUT INPUT INPUT OUTPUT OUTPUT INPUT INPUT PORT C (LOWER) OUTPUT INPUT OUTPUT INPUT OUTPUT INPUT OUTPUT INPUT OUTPUT INPUT OUTPUT INPUT OUTPUT INPUT OUTPUT INPUT

MODE 0 Configurations

231256 10

82C55A

MODE 0 Configurations (Continued)

231256 11

82C55A

MODE 0 Configurations (Continued)

231256 12

Operating Modes MODE 1 (Strobed Input Output) This functional configuration provides a means for transferring I O data to or from a specified port in conjunction with strobes or handshaking signals In mode 1 Port A and Port B use the lines on Port C to generate or accept these handshaking signals

Mode 1 Basic functional Definitions  Two Groups (Group A and Group B)  Each group contains one 8-bit data port and one 4-bit control data port

 The 8-bit data port can be either input or output


Both inputs and outputs are latched

 The 4-bit port is used for control and status of the


8-bit data port

10

82C55A

Input Control Signal Definition STB (Strobe Input) A low on this input loads data into the input latch IBF (Input Buffer Full F F) A high on this output indicates that the data has been loaded into the input latch in essence an acknowledgement IBF is set by STB input being low and is reset by the rising edge of the RD input INTR (Interrupt Request) A high on this output can be used to interrupt the CPU 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 of RD This procedure allows an input device to request service from the CPU by simply strobing its data into the port INTE A Controlled by bit set reset of PC4 INTE B Controlled by bit set reset of PC2 Figure 8 MODE 1 Input
231256 13

231256 14

Figure 9 MODE 1 (Strobed Input)

11

82C55A

Output Control Signal Definition OBF (Output Buffer Full F F) The OBF output will go low to indicate that the CPU has written data out to the specified port The OBF F F will be set by the rising edge of the WR input and reset by ACK Input being low ACK (Acknowledge Input) A low on this input informs the 82C55A that the data from Port A or Port B has been accepted In essence a response from the peripheral device indicating that it has received the data output by the CPU INTR (Interrupt Request) A high on this output can be used to interrupt the CPU when an output device 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 of WR INTE A Controlled by bit set reset of PC6 INTE B Controlled by bit set reset of PC2 Figure 10 MODE 1 Output
231256 15

231256 16

Figure 11 MODE 1 (Strobed Output)

12

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 strobed I O applications

231256 17

Figure 12 Combinations of MODE 1 Operating Modes MODE 2 (Strobed Bidirectional Bus I O) This functional configuration provides a means for communicating with a peripheral device or structure on a single 8-bit bus for both transmitting and receiving data (bidirectional bus I O) Handshaking signals are provided to maintain proper bus flow discipline in a similar manner to MODE 1 Interrupt generation and enable disable functions are also available MODE 2 Basic Functional Definitions Output Operations OBF (Output Buffer Full) The OBF output will go low to indicate that the CPU has written data out to port A ACK (Acknowledge) A low on this input enables the tri-state output buffer of Port A to send out the data Otherwise the output buffer will be in the high impedance state INTE 1 (The INTE Flip-Flop Associated with OBF) Controlled by bit set reset of PC6 Input Operations STB (Strobe Input) A low on this input loads data into the input latch IBF (Input Buffer Full F F) A high on this output indicates that data has been loaded into the input latch INTE 2 (The INTE Flip-Flop Associated with IBF) Controlled by bit set reset of PC4

 Used in Group A only  One 8-bit bi-directional bus port (Port A) and a 5bit control port (Port C)

 Both inputs and outputs are latched  The 5-bit control port (Port C) is used for control
and 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 can be used to interrupt the CPU for input or output operations

13

82C55A

231256 18

Figure 13 MODE Control Word


231256 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

82C55A

231256 21

Figure 16 MODE

Combinations

15

82C55A

Mode Definition Summary MODE 0 IN PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT MODE 1 IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT I O I O I O INTRA STBA IBFA ACKA OBFA change an interrupt enable flag the Set Reset Port C Bit command must be used With a Set Reset Port C Bit command any Port C line programmed as an output (including INTR IBF and OBF) can be written or an interrupt enable flag can be either set or reset Port C lines programmed as inputs including ACK and STB lines associated with Port C are not affected by a Set Reset Port C Bit command Writing to the corresponding Port C bit positions of the ACK and STB lines with the Set Reset Port C Bit command will affect the Group A and Group B interrupt enable flags as illustrated in Figure 18 Current Drive Capability Any output on Port A B or C can sink or source 2 5 mA This feature allows the 82C55A to directly drive Darlington type drivers and high-voltage displays that require such sink or source current MODE 2 GROUP A ONLY

MODE 0 OR MODE 1 ONLY

INTRB INTRB IBFB OBFB STBB ACKB INTRA INTRA STBA I O IBFA I O I O ACKA I O OBFA

Special Mode Combination Considerations There are several combinations of modes possible For any combination some or all of the Port C lines are used for control or status The remaining bits are either inputs or outputs as defined by a Set Mode command During a read of Port C the state of all the Port C lines except the ACK and STB lines will be placed on the data bus In place of the ACK and STB line states flag status will appear on the data bus in the PC2 PC4 and PC6 bit positions as illustrated by Figure 18 Through a Write Port C command only the Port C pins programmed as outputs in a Mode 0 group can be written No other pins can be affected by a Write Port C command nor can the interrupt enable flags be accessed To write to any Port C output programmed as an output in a Mode 1 group or to

16

82C55A

Reading Port C Status


D7 D6

INPUT CONFIGURATION D5 D4 D3 D2 D1

D0

In Mode 0 Port C transfers data to or from the peripheral device When the 82C55A is programmed to function in Modes 1 or 2 Port C generates or accepts hand-shaking signals with the peripheral device Reading the contents of Port C allows the programmer to test or verify the status of each peripheral device and change the program flow accordingly There is no special instruction to read the status information from Port C A normal read operation of Port C is executed to perform this function

I O I O IBFA INTEA INTRA INTEB IBFB INTRB GROUP A D7 D6 GROUP B D0

OUTPUT CONFIGURATIONS D5 D4 D3 D2 D1

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


(Defined By Mode 0 or Mode 1 Selection)

GROUP B

Figure 17b MODE 2 Status Word Format Interrupt Enable Flag INTE B INTE A2 INTE A1 Position PC2 PC4 PC6 Alternate Port C Pin Signal (Mode) ACKB (Output Mode 1) or STBB (Input Mode 1) STBA (Input Mode 1 or Mode 2) ACKA (Output Mode 1 or Mode 2

Figure 18 Interrupt Enable Flags in Modes 1 and 2

17

82C55A

ABSOLUTE MAXIMUM RATINGS


Ambient Temperature Under Bias Storage Temperature Supply Voltage Operating Voltage Voltage on any Input Voltage on any Output Power Dissipation 0 C to a 70 C
b 65 C to a 150 C b 0 5 to a 8 0V a 4V to a 7V

NOTICE This is a production data sheet The specifications are subject to change without notice

GND b 2V to a 6 5V GND b 0 5V to VCC a 0 5V 1 Watt

WARNING Stressing the device beyond the Absolute Maximum Ratings may cause permanent damage These are stress ratings only Operation beyond the Operating Conditions is not recommended and extended exposure beyond the Operating Conditions may affect device reliability

D C CHARACTERISTICS
TA e 0 C to 70 C VCC e a 5V g 10% GND e 0V (TA e b 40 C to a 85 C for Extended Temperture) Symbol VIL VIH VOL VOH IIL IOFL IDAR Parameter Input Low Voltage Input High Voltage Output Low Voltage Output High Voltage Input Leakage Current Output Float Leakage Current Darlington Drive Current
g2 5

Min
b0 5

Max 08 VCC 04

Units V V V V V

Test Conditions

20

IOL e 2 5 mA IOH e b 2 5 mA IOH e b 100 mA VIN e VCC to 0V (Note 1) VIN e VCC to 0V (Note 2) Ports A B C Rext e 500X Vext e 1 7V VOUT e 1 0V Port A only VOUT e 3 0V Ports A B C VOUT e 0 8V VOUT e 3 0V (Note 3) 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

30 VCC b 0 4
g1 g 10

mA mA mA

(Note 4)

IPHL IPHH IPHLO IPHHO ICC ICCSB

Port Hold Low Leakage Current Port Hold High Leakage Current Port Hold Low Overdrive Current Port Hold High Overdrive Current VCC Supply Current VCC Supply Current-Standby

a 50 b 50 b 350 a 350

a 300 b 300

mA mA mA mA

10 10

mA mA

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

82C55A

CAPACITANCE
TA e 25 C VCC e GND e 0V Symbol CIN CI O Parameter Input Capacitance I O Capacitance Min Max 10 20 Units pF pF Test Conditions Unmeasured plns returned to GND fc e 1 MHz(5)

NOTE 5 Sampled not 100% tested

A C CHARACTERISTICS
TA e 0 to 70 C VCC e a 5V g 10% GND e 0V TA e b 40 C to a 85 C for Extended Temperature BUS PARAMETERS READ CYCLE Symbol tAR tRA tRR tRD tDF tRV Parameter 82C55A-2 Min Max ns ns ns 120 10 200 75 ns ns ns Units Test Conditions

v Address Hold Time After RDu


Address Stable Before RD RD Pulse Width Data Delay from RD RD

0 0 150

v u to Data Floating

Recovery Time between RD WR

WRITE CYCLE Symbol tAW tWA tWW tDW tWD Parameter Address Stable Before WR 82C55A-2 Min Max ns ns ns ns ns ns ns Ports A Port C B Ports A Port C B Units Test Conditions

Address Hold Time After WR

v u u

0 20 20

WR Pulse Width Data Setup Time Before WR Data Hold Time After WR

100 100 30 30

19

82C55A

OTHER TIMINGS Symbol tWB tlR tHR tAK tST tPS tPH tAD tKD tWOB tAOB tSIB tRIB tRIT tSIT tAIT tWIT tRES Parameter WR e 1 to Output Peripheral Data Before RD Peripheral Data After RD ACK Pulse Width STB Pulse Width Per Data Before STB High Per Data After STB High ACK e 0 to Output ACK e 1 to Output Float WR e 1 to OBF e 0 ACK e 0 to OBF e 1 STB e 0 to IBF e 1 RD e 1 to IBF e 0 RD e 0 to INTR e 0 STB e 1 to INTR e 1 ACK e 1 to INTR e 1 WR e 0 to INTR e 0 Reset Pulse Width 500 20 0 0 200 100 20 50 175 250 150 150 150 150 200 150 150 200 82C55A-2 Min Max 350 Units Conditions ns ns ns ns ns ns ns ns ns ns ns ns ns ns ns ns ns ns see note 1 see note 2 Test

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 ns minimum 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 level after the reset pulse

20

82C55A

WAVEFORMS
MODE 0 (BASIC INPUT)

231256 22

MODE 0 (BASIC OUTPUT)

231256 23

21

82C55A

WAVEFORMS (Continued)
MODE 1 (STROBED INPUT)

231256 24

MODE 1 (STROBED OUTPUT)

231256 25

22

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

READ TIMING

231256 27

231256 28

A C TESTING INPUT OUTPUT WAVEFORM

A C TESTING LOAD CIRCUIT

231256 29 A C Testing Inputs Are Driven At 2 4V For A Logic 1 And 0 45V For A Logic 0 Timing Measurements Are Made At 2 0V For A Logic 1 And 0 8 For A Logic 0

231256 30 VEXT Is Set At Various Voltages During Testing To Guarantee The Specification CL Includes Jig Capacitance

23

Experincia

Acionamento de motores eltricos CC


Transformando comandos por software em movimentos de mquinas com motor CC.

s experincias com motores CC e de passo sero realizadas em duas aulas, sendo que em cada uma das aulas, a metade da turma far experincia com motor CC e a outra metade com motor de passo, de modo que todos os alunos faam as experincias com os dois tipos de motores.

Objetivo
O objetivo destas duas experincias que o aluno se familiarize com o acionamento por microprocessador de dois tipos importantes de motores eltricos utilizados em automao industrial. Os motores esto montados em dispositivos de movimentao linear com sensores de fim de curso. O aluno dever exercitar a movimentao de um bloco deslizante, monitorando sua posio e evitando colises nos finais de curso com o auxlio dos sensores.

Resumo
Na primeira parte da aula, o aluno dever familiarizar-se com o acionamento do motor eltrico 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 posio do motor.

44

Procedimento experimental
O aluno dever ler o captulo 5 do Manual de Referncia sobre o Mdulo de Interface do Motor CC, devendo compreender a arquitetura da interface, sua configurao de hardware, sua programao inicial e como fazer o motor CC se mover. O aluno dever tambm ler o datasheet do 8255 que utilizado para se adquirir informaes dos sensores nesta experincia e na anterior.
Estudo obrigatrio.

Diversos cabos devero ser conectados para a realizao desta experincia. A Ajuste a tenso de Figura 29 do Manual de Referncia mostra como +12 Volts da fonte conectar os cabos entre os mdulos que compe o de alimentao antes de conectar kit, o mdulo de interface com o motor de passo, o qualquer cabo. sistema de posicionamento linear e a fonte de alimentao. Siga atentamente o esquema mostrado na figura antes de ligar a alimentao.
Conexes do sistema.

Ateno:

Antes de ligar a fonte de alimentao certifique-se de que os cabos esto conectados corretamente. A inverso de algum cabo pode causar danos ao kit. Na dvida consulte o professor.
Ligando o sistema. Depois de conferidas as ligaes feitas pode-se ligar a fonte de alimentao. Logo aps a ligao da fonte de alimentao, se as ligaes estiverem corretas e o mdulo de interface estiver operando corretamente o motor CC entrar em funcionamento.

Estando tudo correto, aparecer tambm o prompt do monitor na tela do computador se este estiver conectado ao mdulo processador do kit e em modo de terminal.
O endereo d0h depende da configurao de jumpers, veja no Manual de Referncia.

A primeira providncia a se tomar fazer o motor parar de girar pois isto pode causar coliso 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 no receba nenhuma tenso parando-o instantaneamente. O programa em C a ser implementado tambm deve parar o motor CC nas primeiras linhas do programa principal em Linguagem C.

45

Cuidado:

No deixe os dedos perto do eixo do sistema de posicionamento linear pois o motor CC inicia o movimento assim que a alimentao do sistema for estabelecida.
Acionamento do motor CC.

O motor CC pode ser acessado diretamente atravs do endereo d0h do mdulo de interface com motor CC. O bit mais significativo do byte a ser escrito neste endereo controla a direo do motor enquanto que os outros bits controlam o nvel de tenso da armadura do motor , o que faz com que o motor varie a velocidade de acordo com a variao desta tenso. 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, tenso zero sobre a armadura) C> o d0 7f (velocidade mxima para o sentido horrio) C> o d0 ff (velocidade mxima para o sentido anti-horrio)

Leitura de sensores. A leitura dos sensores do sistema de posicionamento linear feita atravs do 8255, que contm portas paralelas programveis, presente no mdulo de I/O. O Captulo 2 do Manual de Referncia contm 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 sada. A porta C no O endereo c3h utilizada e pode ser programada para qualquer depende da direo. A direo default para qualquer uma das configurao de portas entrada. Esta programao inicial pode ser jumpers, veja no feita por um comando direto do Monitor no Manual de endereo do registrador de controle do 8255 de Referncia. acordo com o exemplo abaixo. Programao do modo de operao do 8255 pelo Monitor:
C> o c3 90 (programa porta A para entrada e porta B para sada)

Os sensores esto conectados nos quatro bits menos significativos da porta A do 8255. Para ler o contedo desta porta pode-se usar o comando direto do Monitor conforme o exemplo abaixo.
Leitura dos sensores pelo Monitor:
C> i c0 DATA = DF C> (l o valor da porta A do 8255) (o valor lido indicado depois do =)

46

O valor da porta A mostrado na tela. Os quatro bits menos significativos contm o valor dos quatro sensores no momento da leitura. Os quatro bits mais significativos no contm informao nenhuma e deve ser descartados antes da interpretao dos bits menos significativos. Para se isolar o status de um determinado sensor num programa em Linguagem C sugere-se a aplicao de uma funo AND bit a bit com uma mscara que seja composta por 0s em todos os bits indesejveis e 1 no bit desejvel. O trecho de programa abaixo exemplifica este procedimento.
Exemplo para detectar se o sensor 1 foi ativado:
int s1; out (0xc3, 0x90); s1 = in(0xc0) & 0x01; if (s1 != 0) { . . . } // // // // // // // // varivel para status do sensor 1 programa o 8255 com a porta A para entrada l o sensor 1 (bit menos significativo) e aplica a mscara (00000001)b para isolar o bit se for diferente de zero porque detectou

Leitura do encoder.

Ao contrrio do motor de passo cuja posio e velocidade podem ser determinados pela quantidade de pulsos e sua freqncia, respectivamente, dados para o movimento do motor, o motor CC necessita de um dispositivo externo para se saber a sua posio e velocidade. Neste laboratrio utiliza-se um encoder para se determinar a posio 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 horrio e anti-horrio pode-se determinar a posio do eixo do motor num determinado instante. A contabilizao dos pulsos do encoder feita atravs de um 8254 presente no mdulo de interface do motor CC. Existem algumas rotinas de biblioteca que podem ser linkadas com o programa e chamadas para se ter a posio instantnea do eixo do motor.
Rotinas para acessar funes de encoder:
#include mc85\encoder.h // // // // // declarao das rotinas da biblioteca para leitura do encoder, tambm esto declaradas as variveis globais necessrias.

/*--------------------------------------------------------Funo : init_encoder Finalidade : Inicializa o encoder para leitura. Entrada : Byte com a nibble mais significativa do endereo selecionado para a interface. Valores possveis: 0x0c , 0x0d, 0x0e , ou 0x0f

47

Retorno : nenhum ---------------------------------------------------------*/ init_encoder (char endereco); /*--------------------------------------------------------Funo : read_encoder Finalidade : L o valor do encoder e armazena numa varivel. long (4 bytes num vetor de char) Entrada : Byte com a nibble mais significativa do endereo selecionado para a interface. Retorno : valor do encoder com 32-bits numa varivel long ---------------------------------------------------------*/ read_encoder (char endereco, char *encoder);

Nota:

Neste compilador no existe varivel do tipo long. Variveis do tipo long so implementadas em vetores de char com 4 bytes e so 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 implementao particular de variveis do tipo long.
Projeto.

O aluno dever implementar um programa para controlar a movimentao do bloco deslizante atravs das teclas do kit e mostrar a posio 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 magntico pare de detectar a presena do bloco.
3. O movimento prossegue em velocidade alta at que seja

detectado o sensor magntico da direita, quando ento a velocidade deve ser reduzida para a velocidade baixa.
4. Ao ser detectado o sensor ptico da direita o motor deve

inverter a sua direo sem parar e o mesmo procedimento anterior repetido no sentido contrrio.
5. A tecla 3 usada para parar o sistema a qualquer momento. 6. Deve ser programada uma interrupo peridica de modo que

a cada segundo seja feita uma leitura do encoder e atualizada uma varivel global. No programa principal, dentro do loop de

48

controle esta varivel global lida e mostrada no canto inferior direito do display LCD.
Responder no relatrio. O aluno dever responder as seguintes perguntas no relatrio. Recomenda-se testar as respostas durante a aula.

1. Mostre os clculos realizados para determinar a programao

dos timers do 8254 do mdulo de I/O para gerar a interrupo?


2. Como seria possvel determinar a velocidade de deslocamento

do bloco com base na leitura do encoder ?

49

PMR2310 Microprocessadores Aplicados Automao


Manual de Referncia Captulo 5

5. Mdulo de Interface com Motor DC


O acionamento do motor DC feito atravs de uma interface PWM (Pulse Width Modulation) com o 3524. Para que sejam obtidos diferentes nveis de tenso no motor, a informao digital do microprocessador convertida para um sinal analgico que por sua vez convertido num sinal PWM para o motor. Este mdulo possui tambm um contador para um encoder incremental acoplado ao eixo do motor, com o qual pode-se medir a posio angular do eixo do motor. Este contador implementado com um 8254 que pode contar com 16-bits para cada direo. Para que se possa utilizar mais bits para determinao da posio angular do motor este mdulo gera um pedido de interrupo cada vez que um contador de 16-bits do 8254 estoura. A implementao de um contador de 32-bits (ou mais) para a posio angular do eixo do motor na memria do mdulo processador feita por software. A Figura 27 mostra o diagrama de blocos deste mdulo.

Jumpers de configurao de endereos e tipo de microprocessador

Registrador de 8-bits

Conversor D/A

3524 (PWM)

Driver de potncia

Motor DC

Encoder Buffers p/ barramento externo Clock do sistema

Fase A Pedido de interrupo 8254 Decodificador de fases do encorer

Fase B

Figura 27. Diagrama de blocos do mdulo de controle de motor DC

5.1 Pontos de Teste e Jumpers de Configurao


Este mdulo possui um nico ponto de teste para auxlio na verificao dos sinais com o osciloscpio. O ponto TP1 o terra digital do mdulo. Os outros sinais de interesse devem ser monitorados colocando-se a ponta de prova do osciloscpio diretamente sobre o pino do circuito integrado. Os jumpers JP1 a JP4 configuram o tipo de mdulo processador, se 8085 ou se 68HC11, Tabela XVII, enquanto que os jumpers JP5 a JP8 configuram as faixas de endereos de acesso do mdulo, Tabela XVIII. A Figura 28 mostra a posio dos jumpers na placa do mdulo. Tabela XVII. Configurao do tipo de microprocessador/ microcontrolador
microprocessador/microcontrolador 8085 8052 ou 68HC11 JP1 ON OFF JP2 OFF ON JP3 ON OFF JP4 OFF ON

Tabela XVIII. Configurao das faixas de endereos de I/O


Faixa de endereos C0H - CFH D0H - DFH E0H - EFH F0H - FFH JP5 ON OFF OFF OFF JP6 OFF ON OFF OFF JP7 OFF OFF ON OFF JP8 OFF OFF OFF ON

A funo de cada endereo determinada pelos bits A0 a A3 de endereo adicionalmente aos bits A4 a A7

26

verso de 14/02/03

determinados pelos jumpers JP5 a JP8. A Tabela XIX mostra a funo de cada endereo na interface. O registrador de controle da interface est no endereo n0H (onde n pode ser C, D, E ou F dependendo dos jumpers JP5 a JP8) enquanto que o timer 8254 ocupa os endereos n4H a n7H (onde n pode ser C, D, E ou F dependendo dos jumpers JP5 a JP8). Tabela XIX. Funes dos endereos internos dos mdulo
Endereos A3 0 0 0 0 0 A2 0 1 1 1 1 A1 0 0 0 1 1 A0 0 0 1 0 1 conversor D/A 8254 8254 8254 8254 escrita no conversor D/A da interface para o PWM leitura/escrita no Contador 0 leitura/escrita no Contador 1 leitura/escrita no Contador 2 leitura/escrita no Registrador de Controle Dispositivo Funo

Este mdulo pode utilizar as interrupes INT0 e INT1 para tratar o estouro do contador do encoder. As interrupes a serem utilizadas podem ser configuradas pelos jumpers JP9 e JP10. O jumper JP9 indica a utilizao da interrupo INT 0 do barramento (interrupo 5.5 do mdulo processador 8085) enquanto que o jumper JP10 indica a utilizao da interrupo INT 1 do barramento (interrupo 6.5 do mdulo processador 8085). Ocorre um pedido de interrupo INT0 quando estoura o contador para o sentido horrio e ocorre um pedido de interrupo INT1 quando estoura o contador para o sentido anti-horrio.
TP1 GND

P1

JP9 JP10 JP2 JP1 JP4 JP3 JP5 JP6 JP7 JP8 1 1 1

P3

LED Power On

P4

P2

Figura 28. Jumpers de configurao e ponto de teste e posio dos conectores

5.2 Sinais nos Conectores


O conector P1, flat-cable de 50 pinos, conecta o mdulo de motor de passo ao barramento comum a todos os mdulos, podendo ser conectado a qualquer mdulo com conector livre. O conector P2, do tipo Molex de 3 pinos, conecta o mdulo fonte de alimentao 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 sada para o motor DC. As posies dos conectores no mdulo esto indicadas na Figura 28.

5.3 Programao e Controle da Interface 5.3.1 Controle do motor DC


O motor DC utilizado no Sistema de Posicionamento Linear de tenso nominal de 12V. Para o controle da velocidade de seu movimento este mdulo utiliza um driver PWM com um conversor D/A de 8-bits, dos quais apenas 7-bits so utilizados e o oitavo bit, o mais significativo, utilizado para indicar a direo do movimento.

PMR2310 Microprocessadores aplicados automao

27

Sendo assim, a faixa de tenso entre 0V e +12V dividida em 127 intervalos e a faixa de tenso 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 nvel de tenso deve-se escrever um valor de 8-bits no endereo n0h, onde n depende da configurao 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 horrio e outro para contagem de pulsos no sentido anti-horrio. A posio efetiva do eixo do motor obtida pela diferena entre os dois contadores. No entanto, os contadores do 8254 so regressivos e devem ser inicializados com uma constante de valor alto. Alm 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 sncrona). 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, devese subtrair 1 da leitura do encoder toda vez que este lido. Aps a subtrao, complementa-se o valor obtido para se ter o valor dos pulsos de encoder se a contagem fosse crescente. Este valor deve ento ser gravado em alguma varivel interna do programa. No final da contagem de cada um dos contadores do 8254 gerado um pulso de interrupo para o microprocessador para avis-lo do estouro da contagem. Esta interrupo pode ser utilizada para incrementar um outro contador por software de modo a aumentar o nmero 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 sada do contador vai para 0 quando a contagem chega a 0. Ou seja, a interrupo 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 no quando esta passa de FFFFh para 0000h. No entanto, como existe uma correo nos valores do contador que subtrai 1 do valor lido, o que acontece que quando a sada do contador do 8254 vai para 0, a contagem real (sem o desconto) vai de 0001h para 0000h mas o valor da varivel interna do programa que armazena a conta (com a subtrao) vai de FFFFh para 0000h (que o complemento de [0001h 1h], e complemento de [0000h 1]). Desta forma fazendo-se a subtrao de 1 do valor a cada leitura, resolve-se o problema da interrupo na hora certa, e do desconto do primeiro pulso.

5.4 Conexes do Mdulo de Motor CC com o sistema


A Figura 29 mostra as conexes entre o mdulo de motor CC, os outros mdulos do kit, a fonte de alimentao e o sistema de posicionamento.

28

verso de 14/02/03

Figure 29. Conexes do mdulo de motor CC com outros mdulos do sistema

PMR2310 Microprocessadores aplicados automao

29