universidade federal de minas gerais …livros01.livrosgratis.com.br/cp094100.pdf · pc program...

109
UNIVERSIDADE FEDERAL DE MINAS GERAIS ESCOLA DE ENGENHARIA DEPARTAMENTO DE ENGENHARIA NUCLEAR Programa de Pós-Graduação em Ciências e Técnicas Nucleares CONTROLE DE POSICIONAMENTO DE UM DETECTOR USANDO CIRCUITO ELETRÔNICO MICROCONTROLADO E PROGRAMAÇÃO ASSEMBLY. Abner Pinto da Fonseca Belo Horizonte 2008

Upload: dinhdung

Post on 29-Sep-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

UNIVERSIDADE FEDERAL DE MINAS GERAISESCOLA DE ENGENHARIA

DEPARTAMENTO DE ENGENHARIA NUCLEARPrograma de Pós-Graduação em Ciências e Técnicas Nucleares

CONTROLE DE POSICIONAMENTO DE UM DETECTOR USANDO CIRCUITOELETRÔNICO MICROCONTROLADO E PROGRAMAÇÃO ASSEMBLY.

Abner Pinto da Fonseca

Belo Horizonte2008

Page 2: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

Livros Grátis

http://www.livrosgratis.com.br

Milhares de livros grátis para download.

Page 3: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

2

Abner Pinto da Fonseca

CONTROLE DE POSICIONAMENTO DE UM DETECTOR USANDO CIRCUITOELETRÔNICO MICROCONTROLADO E PROGRAMAÇÃO ASSEMBLY.

Dissertação apresentada ao Programa de Pós-Graduação em Ciências e Técnicas Nucleares daEscola de Engenharia da Universidade Federal deMinas Gerais, como requisito parcial para obtençãodo título de Mestre em Ciências e TécnicasNucleares.

Área: Ciências das Radiações

Orientador: Prof. Arno Heeren de OliveiraDepartamento de Engenharia Nuclear

Belo Horizonte2008

Page 4: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

3

Dedico este trabalho aos meus pais José Fonsecae Conceição, os quais são as referências fortes de

retidão na minha vida.

A todos os meus irmãos: Antônio, Maria Eunice,Arlei, Acir, Aécio, Aures, Ana Maria e Érika,

componentes dessa grande e importante família daminha vida.

A minha querida esposa Shirley Martins da CostaFonseca por todos os momentos de amparo e

perseguição conjunta aos nossos grandes objetivos.

A meu grande filho Bruno Martins da Costa Fonseca,o qual esteve, está e estará em primeiro plano por

todo sempre.

Page 5: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

4

Agradecimentos.

Agradeço a todos que direta ou indiretamente sentiram minha falta, mas compreenderam estes

meus momentos de ausência, aos quais debruçava-me sobre esta dissertação para sua

materialização.

Ao Prof. Arno que pacientemente me orientou rumo ao objetivo maior desse projeto.

Ao meu filho Bruno pelo tempo dedicado em desenhos e críticas.

À minha esposa Shirley por tudo.

Page 6: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

5

"Uma vida sem investigação não é digna de ser vivida.”

Platão

Page 7: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

6

Índice:

RESUMO..................................................................................................................................13

ABSTRACT .............................................................................................................................14

INTRODUÇÃO........................................................................................................................15

Capítulo 1. REVISÃO BIBLIOGRÁFICA ..............................................................................17

1.1 O microcontrolador PIC16F877A ......................................................................................17

1.1.1 Recursos disponíveis ...................................................................................................18

1.1.2 Características elétricas ...............................................................................................19

1.1.3 Arquitetura externa e interna .......................................................................................20

1.1.3.1 Lay-out externo.....................................................................................................20

1.1.3.2 Lay-out interno e processamento básico...............................................................21

1.1.4 O clock e os ciclos de máquina....................................................................................25

1.1.5 Memória de dados .......................................................................................................27

1.1.6 Alguns Registradores Especiais ..................................................................................29

1.1.6.1 Registradores Especiais de uso geral....................................................................30

a) Registrador STATUS ...............................................................................................30

b) Registrador OPTION_REG......................................................................................31

1.1.6.2 Registrador INTCON ...........................................................................................33

1.1.6.3 Registradores Especiais, PORTx e TRISx ...........................................................34

1.1.7 A Memória de Programa e a Pilha (Stack) ..................................................................35

1.1.8 Conjunto das instruções...............................................................................................37

1.2 Comunicação externa através do LCD ...............................................................................40

1.2.1 O Display de Cristal Líquido (LCD) ...........................................................................41

1.2.2 O Registrador de deslocamento, circuito integrado 74164. ........................................44

Page 8: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

7

1.3 Motor de Passo ...................................................................................................................47

1.3.1 Aplicação.....................................................................................................................47

1.3.2 Caracterização, tipos e funcionamento básico.............................................................47

1.3.3 Escolhendo um motor de passo. ..................................................................................49

Capítulo 2. MATERIAIS E MÉTODOS..................................................................................54

2.1 Hardware – circuitos eletro-eletrônicos..............................................................................54

2.1.1 Fonte de alimentação...................................................................................................54

2.1.2 Motor de passo ............................................................................................................55

2.1.2.1 Driver e ligação das bobinas do motor de passo .....................................................58

Capítulo 3. RESULTADOS E CONCLUSÃO.........................................................................61

3.1 A placa principal - contém o MCU ....................................................................................61

3.2 Mecânica – o lay-out final....................................................................................................63

3.3 Softwares ............................................................................................................................64

3.3.1 Softwares de apoio.......................................................................................................64

3.4 Visualização final do projeto..............................................................................................68

3.5 CONCLUSÃO...................................................................................................................72

REFERÊNCIAS BIBLIOGRÁFICAS .....................................................................................74

ANEXOS..................................................................................................................................77

A1 – Softwares – programas em assembly ..............................................................................77

a) Programa Principal .......................................................................................................77

b) Sub-rotinas de apoio ao programa principal ................................................................86

b1) Rotina principal ......................................................................................................86

b2) Rotinas de apoio.....................................................................................................88

1) Rotina para controle da escrita no LCD...............................................................88

2) Rotinas de mensagens para o LCD ......................................................................89

Page 9: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

8

3) Rotinas auxiliares às rotinas de mensagens. ........................................................95

4) Rotina de controle da rotação do motor de passo ................................................97

5) As demais rotinas .................................................................................................98

A2 – Estimando o torque do sistema motor-haste-mesa .......................................................105

Page 10: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

9

LISTA DE TABELAS

Tabela 1.1 – Registradores Especiais e de Propósito Geral – RAM ........................................28

Tabela 1.2 – Registrador STATUS...........................................................................................30

Tabela 1.3 – Registrador OPTION_REG.................................................................................31

Tabela 1.4 – Bits PS2, PS1 e PS0.............................................................................................32

Tabela 1.5 – Registrador INTCON...........................................................................................33

Tabela 1.6 – Registrador TRISx...............................................................................................35

Tabela 1.7 – Registrador PORTx .............................................................................................35

Tabela 1.8 – Instruções do PIC – Operações orientadas a bit. .................................................38

Tabela 1.9 – Instruções do PIC – Operações para diversos controles......................................39

Tabela 1.10 – Instruções do PIC – Operações orientadas a byte..............................................39

Tabela 1.11 – Instruções do PIC – Operações com valores numéricos....................................40

Tabela 1.12 – Pinos do PIC para comunicação com o LCD. ..................................................40

Tabela 1.13 – Caracterização dos pinos do LCD ....................................................................42

Tabela 1.14 – Tabela de funcionamento do CI 74164.............................................................45

Tabela 1.15 – Ligação do CI 74164 com o LCD (dados)........................................................46

Tabela 1.16 – Código binário que aciona o motor de passo unipolar. ....................................49

Tabela 1.17 – Ângulo do Passo e respectivos Passos por Volta. ............................................51

Tabela 1.18 – Dados relevantes de alguns motores de passo. .................................................53

Tabela 2.1 – Dados relevantes do motor de passo usado no projeto. ......................................55

Page 11: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

10

LISTA DE FIGURAS

Figura 1.1 – Lay-out externo do microcontrolador PIC16F877A ............................................20

Figura 1.2 – Lay-out interno do microcontrolador PIC16F877A.............................................21

Figura 1.3 – Ciclos de máquina – busca e execução de instruções ..........................................26

Figura 1.4 – Memória de Programa e Pilha..............................................................................36

Figura 1.5 – Lay-out externo do LCD 2 linhas x 16 colunas ..................................................42

Figura 1.6 – Fluxograma - Inicialização do LCD.....................................................................43

Figura 1.7 – Lay-out do CI 74164, shift register. .....................................................................44

Figura 1.8 – Formas de onda do CI 74164 – domínio do tempo..............................................45

Figura 1.9 – Identificação dos torques dos motores de passo (curvas genéricas) ....................52

Figura 1.10 – Exemplos de curvas de torque de alguns motores de passo...............................53

Figura 2.1 – Circuito da fonte de alimentação. ........................................................................55

Figura 2.2 – Curvas dos torques dinâmicos do motor de passo 23LM-K005. .........................56

Figura 2.3 – Identificação do motor pelo sistema numérico do fabricante. .............................56

Figura 2.4 – Detalhes do estator (à esquerda) e rotor (à direita) do motor de passo.. ..............57

Figura 2.5 – Motor de passo aberto – todos os seus componentes..........................................57

Figura 2.6 – Lay-out do rotor e rotor-estator do motor de passo híbrido. ................................58

Figura 2.7 – Identificação das bobinas do motor de passo unipolar. .......................................59

Figura 2.8 – Driver para o motor de passo unipolar.................................................................59

Figura 3.1 – Circuito principal – contém o PIC16F877A. .......................................................61

Figura 3.2 – Ligação CI74164(Shift Register) e LCD ao MCU...............................................62

Figura 3.3 – Lay-out da estrutura mecânica. ............................................................................63

Figura 3.4 – PCI fonte alimentação - Lado da Solda (esquerda)..............................................64

Figura 3.5 – PCI fonte alimentação - Lado dos componentes (direita)....................................64

Figura 3.6 – PCI Driver do motor de passo – lado da solda. ...................................................65

Page 12: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

11

Figura 3.7 – PCI Driver do motor de passo – lado dos componentes. .....................................65

Figura 3.8 – PCI Placa principal com o PIC16F877A – lado da solda. ...................................66

Figura 3.9 – PCI Placa principal com o PIC16F877A – lado dos componentes......................67

Figura 3.10 – Detalhe construtivo da mesa móvel ...................................................................68

Figura 3.11 – Visão geral do projeto, sem acabamento, primeiro ângulo................................69

Figura 3.12 – Visão geral do projeto, sem acabamento, segundo ângulo. ...............................69

Figura 3.13 – Visão geral do projeto, sem acabamento, terceiro ângulo. ................................70

Figura 3.14 – Fonte de alimentação, placas driver motor de passo e do microcontrolador. ....70

Figura 3.15 – A Placa principal – contém o MCU. ..................................................................71

Figura 3.16 – Visão geral do projeto, com acabamento. ..........................................................71

Figura 3.17 – Display LCD indicando o Afastamento rápido da Posição_0............................72

Figura A1 – Programa Principal – Início. ................................................................................77

Figura A2 – Programa Principal – Configurações e definições e detecção chave apertada.....80

Figura A3 – Programa Principal – Final. Tratamento de uma tecla pressionada e chamada da

rotina principal..................................................................................................................85

Figura A4 – Rotina Principal – Exemplo para uso das demais rotinas produzidas..................86

Figura A5 – Rotina para escrever no LCD. ..............................................................................88

Figura A6 – Mensagens no LCD..............................................................................................90

Figura A7 – Rotinas de apoio às de Mensagens.......................................................................95

Figura A8 – Rotina controle 1mm deslocamento da mesa móvel. ...........................................98

Figura A9 – Rotina para conversão hexadecimal em ASCII....................................................99

Figura A10 – Rotina inversão das posições dos nibbles. .......................................................101

Figura A11 – Rotinas de atraso do motor e de 1ms................................................................103

Figura A12 – Forma de onda do sinal de clock do motor de passo........................................106

Figura A13 – Indicação do torque e velocidade de trabalho do sistema projetado. ...............106

Page 13: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

12

LISTA DE ABREVIATURAS

ASCII American Standard Code for Information Interchange, Código padrão

americano para troca de informações;

BIT BInary digiT, é menor unidade digital de informação;

BYTE É o agrupamento de 8 bits;

CISC Complex Instruction Set Computer, ou computador que faz uso de um

grande conjunto de instruções;

CPU Central Processing Unit, ou Unidade Central de Processamento;

DIP Dual-in-line package, invólucro de alguns circuitos integrados, os quais

têm pinos paralelos;

EPROM Eraseble PROM, é uma memória PROM apagável por luz ultravioleta.

E2PROM Memória EPROM apagável Eletricamente;

FLASH EEPROM Memória EEPROM com baixo tempo de acesso, da ordem de 100ns.

GND Ground, ou Terra da fonte de alimentação;

LCD Liquid Crystal Display, ou Display (ou visor) de Cristal Líquido;

LED Light Emitter Diode, ou diodo emissor de luz.

LIFO Last In First Out, ou é um procedimento operacional de manipulação de

dados, onde o último dado a entrar num dispositivo é o primeiro a sair.

I2C Inter-Integreted Circuit, é um protocolo de comunicação serial e

síncrono, para comunicação entre CIs.

I/O Input/Output, ou entrada/saída;

MCU Micro Controller Unit, ou microcontrolador;

MPU Micro Processor Unit, ou microprocessador;

NIBBLE É o agrupamento de 4 bits.

PC Program Counter, ou contador de programa.

PROM Programmable ROM ou memória somente de leitura programável.

RAM Random Access Memory, ou memória de acesso aleatório;

RISC Reduced Instruction Set Computer, ou computador que faz uso de um

reduzido conjunto de instruções;

ROM Read Only Memory, ou memória somente de leitura;

TTL Transistor-Transitor Logic, ou lógica construída a base de transistores;

Page 14: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

13

RESUMO

O objetivo deste trabalho foi a construção de um circuito eletrônico

microcontrolado e programas assembly que suportam o controle do posicionamento de uma

câmara de ionização em relação a uma fonte radioativa. Para este banco de posicionamento

foi construída uma infra-estrutura mecânica, a qual comportou todo o circuito eletrônico e, um

motor de passo diretamente acoplado a uma haste rosqueada que, a cada fração de volta,

movimenta uma mesa a passos eqüidistantes.

Para este sistema foi construído três placas de circuito impresso, as quais alojam

todo o circuito eletrônico necessário, que são: a) a placa da fonte de alimentação; b) a placa de

circuito impresso principal (a que contém o microcontrolador PIC, a interface com o LCD, o

teclado, o banco de memória serial e conectores de entrada/saída para diversos fins); c) a

placa para interface com o motor de passo.

Em termos das rotinas em assembly foi desenvolvido uma rotina para o controle

da escrita no LCD (dado enviado serialmente, objetivando a otimização dos recursos do PIC),

a rotina para leitura do teclado e a rotina para o controle do motor de passo juntamente com a

indicação no LCD da posição onde a mesa móvel se encontra em cada momento do

processamento.

Page 15: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

14

ABSTRACT

The objective was the construction of a microcontroller eletronic circuit and assembly

softwares that support the position control of a ionization chamber in relation radioactive

source. For this position bank was built a mechanical infrastructure, containing the entire

eletronic circuit and a step motor directly joined to a threaded pole, which move table by a

equidistant steps in each fraction of a turn.

For this system was built three Printed Circuit Board (PCB), containing the entire

electronic circuit needed, which are: a) the source power board; b) the main printed circuit

board (having the PIC microcontroller, the LCD interface, the keyboard, the serial memory

bank and the I/O socket for another purpouses; c) the board for interface with the step motor.

In terms of the assembly routines was developed the routine for the write control on

the LCD (data serial sended in order to optimize the PIC resources), the routine for the

keyboard read and the routine for the step motor control together with the indication on LCD

of the mobile table position at each moment of the process.

Page 16: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

15

INTRODUÇÃO

Este projeto foi um passo intermediário para se ter um sistema automatizado das

medidas da carga elétrica (via eletrômetro) gerada no gás contido numa câmara de ionização.

Pela medida da carga elétrica, esta resultante da interação da radiação com o gás no interior

do detector, é possível a determinação da dose absorvida, a certa distância fonte-detector, a

qual é definida como a energia absorvida por unidade de massa do material absorvedor,

(Knoll, 1989, p.61). Um sistema de posicionamento fonte-detector é composto de uma

estrutura mecânica, contendo uma parte móvel (mesa), que se desloca devido ao acoplamento

a uma haste com rosca sem fim, acionada por um motor de passo, e um ponto de referência

(estático) onde se fixará um dos elementos, seja a fonte radioativa ou o detector.

Em termo eletro-eletrônico, foi: (a) utilizado um motor de passo híbrido, que é a

combinação dos tipos relutância variável e imã permanente, com enrolamentos unipolar,

alimentados em +12Vcc e um específico circuito de controle (driver); (b) construído uma

fonte de alimentação (GND, +5Vcc e +12Vcc); (c) construído um circuito contendo o

microcontrolador PIC16F877A (núcleo do projeto) com suporte a diversos periféricos, como

a interface com o LCD (hardware e software, transmissão serial dos dados), e as saídas para o

controle do motor de passo (clock e direção da rotação); e por fim, mas muito importante, (d)

desenvolvido várias rotinas em linguagem de programação assembly, as quais suportam todo

este projeto.

O objetivo foi, portanto, o desenvolvimento de um sistema de controle de

posicionamento, de alta precisão, entre uma câmara de ionização e uma fonte radioativa. Este

sistema de posicionamento será a infra-estrutura básica para se conseguir a automação plena

das medidas da carga elétrica, a qual guarda relação com a dose absorvida.

Este trabalho é composto de três capítulos. O primeiro, Revisão Bibliográfica,

proporcionou um suporte teórico à totalidade deste projeto, baseando-se nos dados

Page 17: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

16

encontrados na literatura. O segundo, Materiais e Métodos, foi dedicado ao desenvolvimento

e construção da eletrônica (hardwares) e dos softwares necessários para a obtenção dos

resultados esperados. O terceiro, Resultados e Conclusão, foi apresentado a implementação

final do projeto (mecânico, eletrônico, softwares), que será a base aos futuros

desenvolvimentos, cujo escopo respalda na automação plena da coleta de dados.

Page 18: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

17

Capítulo 1. REVISÃO BIBLIOGRÁFICA

Colocar-se-á em relevo neste capítulo os quesitos que suportem este primeiro

momento do projeto ora proposto. Deste modo, foi necessário um suficiente estudo (no limite

do devido) sobre o microcontrolador PIC16F877A, da Microchip, sobre o circuito integrado

74164 (registrador de deslocamento), sobre o Display de Cristal Líquido (LCD) e sobre o

motor de passo. Deve-se observar que o estudo sobre a memória serial 24LC256 e a

comunicação RS232 serão cumpridos na seqüência acadêmica deste curso.

1.1 O microcontrolador PIC16F877A1

Um microcontrolador (MCU) é um componente eletrônico com vários recursos

integrados em um só invólucro2 (DIP), o qual só realiza alguma tarefa se for devidamente

programado. A sua programação pode ser realizada utilizando uma linguagem de alto nível (à

luz da linguagem humana) ou de baixo nível (à luz da linguagem entendida pela máquina). A

linguagem assembly é uma linguagem de programação de baixo nível (tem relação direta com

a linguagem de máquina), a qual consome, caso construa-se eficientes rotinas, o menor espaço

da memória do microcontrolador – memória de programa, que é, por vezes, um recurso

escasso nesses dispositivos eletrônicos, e foi por isso que se escolheu esta linguagem para

trabalhar (Pereira, 2003).

1 Deve-se observar que a fonte bibliográfica primária referente a um específico componente eletrônico é o datasheet produzido e editado pelo seu fabricante. O data sheet do PIC16F877A, da Microchip, é composto por 232páginas contendo toda informação técnica que o fabricante julgou ser suficiente ao devido uso deste circuitointegrado. Então, neste texto, não poderia ser diferente, buscou os fundamentos técnicos do MCU no referidodata sheet, com suporte, também, em outras literaturas.2 Um microcontrolador contém em um único circuito integrado todos os blocos funcionais de ummicroprocessador (MPU) e bancos de memórias voláteis e não voláteis e vários dispositivos de I/O. É umverdadeiro microcomputador dentro de um único DIP (Zanco, 2005, p.33).

Page 19: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

18

O microcontrolador participa de todas as operações deste projeto, dado que é o

cerne do mesmo. Mas focou-se no estritamente necessário, pois ele é muito mais do que se vê

aqui.

1.1.1 Recursos disponíveis3

Microcontrolador de 40 pinos;

Barramento de programa de 14 linhas (uma linha para cada bit a ser transferido);

Barramento de dados de 8 linhas ou 8 bits;

PC (Program Counter) de 13 bits para endereçamento da memória de programa;

Pilha (Stack) de 8 níveis;

Set de 35 instruções;

33 pinos de I/O em 5 portas, ou PORTA (RA5 a RA0), PORTB (RB7 a RB0),

PORTC (RC7 a RC0), PORTD (RD7 a RD0), PORTE (RE2 a RE0);

Suporta 15 tipos de interrupções do processamento, por devidas solicitações, as

quais desviam o processamento para a rotina que as atendem;

Memória de programa, FLASH E2PROM de 8K x 14 bits (palavras de 14 bits por

posição endereçada);

Memória de dados voláteis, RAM de 368 x 8 bits (para uso geral pelo usuário,

sendo que cada endereço armazena um byte). Deve-se observar que toda a

memória RAM é composta por 512 x 8 bits (endereços de 000h a 1FFh), sendo os

368 supracitado, 77 x 8 bits para registradores especiais ou SFR, Special Functions

Registers (alguns deles são espelhados) e 19 são indisponíveis. Os 48 restantes não

são fisicamente implementados e nestes estão contidos os mencionados

registradores espelhados.

3 Microchip, 2003, p.1-5

Page 20: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

19

Memória de dados não voláteis, EEPROM de 256 x 8 bits (cada endereço

armazena um byte) [recurso não utilizado neste projeto, pois esta quantidade

endereçada é insuficiente, por isso foi necessário o uso de um banco de memória

EEPROM externa];

Três timers, 2 de 8 bits [Timer0 (TMR0)] e [Timer2 (TMR2)] e 1 de 16 bits

[Timer1 (TMR1)] [recursos não utilizados neste projeto];

Comunicações seriais SPI, I2C e USART [nesta etapa do trabalho nenhum desses

recursos serão utilizados, mas, a posteriori, a comunicação I2C (comunicação com

a memória EEPROM serial 24LC256) e a USART (comunicação com o PC),

provavelmente, serão;

Oito conversores A/D de 10 bits e dois módulos comparadores analógicos

[recursos não utilizados neste projeto];

Dois módulos CCP (Capture, Compare e PWM) [recursos não utilizados neste

projeto];

1.1.2 Características elétricas4

Tensão de alimentação: de 4,0V a 5,5Vcc para clock de até 20 MHz;

Tensão de alimentação: de 2,0 a 5,5Vcc para clock de até 4 MHz, mas deve-se

verificar se a função BOR (Brown-out Reset) está ativa, pois esta função é

acionada quando 3,65 ≤ VBOR ≤ 4,35 V;

Tensão máxima no pino VDD (alimentação positiva) em relação ao VSS: -0,3 a 7,5V

Temperatura ambiente, de trabalho: -55o a +125o C;

Temperatura de armazenamento: -65o a +150o C;

Dissipação máxima de energia: 1,0 W;

4 Microchip, 2003, p.173.

Page 21: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

20

Corrente máxima de saída do pino Vss (GND): 300 mA;

Corrente máxima que entra no pino VDD (alimentação positiva): 250 mA

Corrente máxima de entrada ou de saída em algum pino de I/O: 25 mA;

Corrente máxima de entrada e saída das Portas de I/O: 200 mA

1.1.3 Arquitetura externa e interna

1.1.3.1 Lay-out externo

O circuito integrado do MCU utilizado foi confeccionado em um DIP de 40 pinos

(Figura 1.1), sendo que 2 destes pinos (VSS) são utilizados para ligar o terra (GND), 2 para

ligar o terminal positivo da fonte de alimentação (VDD) [de +2,0 a +5,5Vcc, dependendo da

freqüência do clock e da função BOR (Brown-out Reset)], 1 para Reset externo (/MCLR), 2

para o sinal de clock ou relógio (OSC1/CLKIN e OSC2/CLKOUT), de até 20 MHz (foi usado

neste projeto um cristal de 4MHz), e os demais 33 pinos são terminais ou portas para I/O

(entrada e saída de dados) [PORTA (RA5 a RA0), PORTB (RB7 a RB0), PORTC (RC7 a RC0),

PORTD (RD7 a RD0), PORTE (RE2 a RE0)];

Figura 1.1 – Lay-out externo do microcontrolador PIC16F877A (Microchip, 2003, p.3).

Page 22: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

21

1.1.3.2 Lay-out interno e processamento básico

A Figura 1.2, abaixo, mostra os detalhes da arquitetura interna do microcontrolador

PIC16F877A os quais o fabricante julgou serem suficientes para o seu uso.

Figura 1.2 – Lay-out interno do microcontrolador PIC16F877A (Microchip, 2003, p.7).

Page 23: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

22

O microcontrolador PIC16F877A é uma arquitetura baseada na tecnologia RISC5

que reconhece apenas 35 instruções, cujas codificações plenas passam por um barramento

interno (Program Bus) de 14 linhas (cada linha, ou trilha, transporta um bit) para a

transferência interna do OPCODE [código de operação e operando (normalmente simbolizado

pela letra k, denotando um valor numérico, ou f, denotando o nome ou endereço de um

registrador definido ou não pelo programador, em cujo interior tem-se bits simbolizados pela

letra b, que denota a posição do bit dentro do referido registrador f.)]. Há uma

correspondência direta entre o OPCODE e uma determinada instrução. O código de operação

também é conhecido por código objeto (Maldonado, 1990, p.62 e 67).

O programa do usuário é carregado na memória de programa, que é uma memória

FLASH EEPROM de 8k x 14 bits (memória não volátil, ou seja, sua informação não se perde

quando a máquina é desligada), representando 8.192 posições endereçadas (correspondem aos

endereços de 0000 a 1FFF, em hexadecimal), onde armazenam em cada uma dessas posições

14 bits (OPCODE + operando), os quais quando devidamente endereçados saem pelo

barramento de programa.

O contador de programa (PC, Program Counter) é um contador síncrono cuja

contagem é seqüencial e crescente. Esta contagem começa imediatamente após receber um

sinal de reset, nível lógico baixo no pino 1 ou /MCLR, em 0000h (Oliveira, 1983, p.105). A

seqüência de sua contagem só é quebrada quando uma instrução que promova algum salto for

executada. As saídas desse contador de programa estão diretamente associadas ao

endereçamento da memória de programa (Oliveira, 1986, p.35).

Uma vez que um OPCODE e operando se encontram no barramento de programa,

ele (o OPCODE) deverá ser decodificado para que a CPU (ou os blocos funcionais que

correspondem às atividades executadas por uma CPU) “saiba” o que será executado.

5 Uma boa discussão sobre as tecnologias RISC e CISC pode ser encontrada em Tanenbaum, 2001, p.27.

Page 24: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

23

Inicialmente, e temporariamente, todo o OPCODE e operando (ou código objeto e operando)

ficam armazenados no registrador de instrução (IR), de onde os bits correspondentes à

identificação da instrução (OPCODE ou código objeto) são apresentados às entradas do

dispositivo digital combinacional denominado por decodificador de instrução e controle, o

qual, após realizar a decodificação da instrução, ou seja, extrair do código o seu significado,

promoverá a geração dos sinais de controle necessários à plena execução da instrução em

voga, procedimento conhecido por ciclo de busca (fetch) e execução de uma instrução (Tocci,

2003, p.694).

O PIC16F877A tem oito níveis de pilha (stack). Entende-se por pilha um lugar

construído com memória volátil onde se guardará o endereço de retorno ao programa

principal quando uma instrução quebrar a seqüência, porém, temporária, da execução desse

programa. O mecanismo de funcionamento da pilha é LIFO, ou Last In First Out, ou seja, o

último dado a entrar na pilha será o primeiro a sair dela (Taub, 1982, p.410). Como a pilha do

MCU em voga só tem oito níveis, estes passam a ser um ponto em que o projetista deve ter

atenção para não superá-los, pois caso ocorra, perder-se-á o devido retorno ao programa

principal. As instruções que usam a pilha são: CALL, RETLW, RETURN e solicitações de

interrupção, cujo retorno ao fluxo normal do programa se dá pela instrução RETFIE.

A arquitetura interna do PIC16F877A contém uma memória RAM (memória

volátil, ou seja, sua informação é perdida quando a máquina é desligada). Esta memória foi

dividida em 4 partes, ou 4 bancos, denominados por Banco 0 a Banco 3 (selecionados pelos

bits RP1 e RP0 de um registrador chamado de STATUS, que mantém correspondência binária

e decimal). Cada um desses bancos comporta até 128 bytes endereçáveis. Os endereços mais

baixos da RAM foram reservados e receberam funções e nomes predeterminados pelo

fabricante. São os chamados Registradores Especiais (ou Special Function Registers, SFRs).

Os demais endereços ou são indisponíveis (inacessíveis), ou são de propósitos gerais, estes

Page 25: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

24

chamados de Registradores de Uso Geral (General Purpose Registers), os quais são usados

livremente pelo programador, nomeando-os de acordo com suas específicas funções

condizentes à realização do programa que dá solvência a um determinado problema

(Micrichip, 2003, p.16, 17 e 22).

O registrador W (Work, que noutras tecnologias é denominado de Acumulador)

participa em muitas das instruções do PIC. Observe a sua proximidade, no lay-out, com a

ULA (Unidade Lógica e Aritmética). A ULA, como o próprio nome já sugere, é responsável

por realizar as operações lógicas e aritméticas, além das rotações (bit-a-bit) à esquerda e à

direita de um byte residente em um registrador.

As portas de I/O promovem os meios necessários para o componente se

comunicar com o mundo exterior. Através delas o MCU pode ler um dado externo, trazendo-o

para o seu interior e processando-o. O MCU pode, também, enviar um dado para fora, o que é

o mesmo que escrever este dado num dispositivo de saída, quando da execução de alguma

tarefa. O PIC16F877A tem 33 pinos com estas funções de I/O.

O reset do MCU (PC 0000h) pode ocorrer através do acionamento de um botão

externo ao microcontrolador, de tal forma que, ao ser acionado, faz com que o nível lógico no

pino 1 ( /MCLR) vá para zero (ou nível lógico baixo em lógica positiva). O reset também

ocorre no ato de ligar a máquina, que é o POR (Power-on Reset), ou ainda, caso a tensão de

alimentação caia abaixo de 4,0 V (tipicamente, caso configurado para isto) por um tempo

próximo a 100µs, que é o BOR (Brown-out Reset). O WDT (ou Watchdog Timer), é um

temporizador cuja principal característica é evitar que o sistema trave por problemas no

software. Caso esta função esteja ativa e não receber em tempos predeterminados uma

instrução que zere este contador (instrução CLRWDT) e expirar a sua contagem, ou ocorrer o

chamado time-out, implicará no reset do microcontrolador, o que é o mesmo que reiniciar o

programa (Micrichip, 2003, p.146 e 148).

Page 26: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

25

Desta maneira, mostrou-se o interior do MCU e também, sucintamente, como seus

blocos participam dos processamentos. Na seqüência, serão apresentados os ciclos de

máquina e alguns registradores especiais (ou Special Function Registers, SFRs) - não todos,

mas os que suportam este projeto -, e, por fim, mas muito importante, um estudo sobre as

instruções que o MCU reconhece e executa.

1.1.4 O clock e os ciclos de máquina

O sinal de clock é fundamental para o funcionamento do microcontrolador. Ele é a

referência de tempo para todo o sistema. Sua freqüência fOSC (freqüência do oscilador, ou do

cristal6, injetada no pino 13 – OSC1/CLKIN) é, internamente ao MCU, dividida por quatro

para gerar os sinais de clocks defasados e identificados por Q1, Q2, Q3 e Q4 (quatro ondas

quadradas) (Souza, 2005, p.24). O contador de programa (PC) é incrementado (ou seja, é

somado 1 ao seu valor presente) na fase Q1 (instante em que já existe uma instrução sendo

processada) e, quando estiver na fase Q4, momento em que a instrução atual terminará de ser

processada, o PC apontará, ou endereçará, para uma nova instrução, a qual será copiada

(transmitida) da memória de programa para o registrador de instrução (IR) nesta fase Q4. A

nova instrução, uma vez armazenada no registrador de instrução, será decodificada (gerando

todos os sinais de controles necessários à sua plena execução) e executada durante o ciclo de

máquina de Q1 a Q4. Este procedimento de buscar uma instrução em um ciclo de máquina e

executá-la em outro ciclo de máquina, juntamente com a busca da próxima instrução a ser

executada, é conhecido por PIPELINE (Tanenbaum, 2001, p.25). Então, em um determinado

ciclo de máquina busca-se uma instrução (Ciclo de Busca da instrução ou FETCH),

6 Os cristais de quartzo quando submetidos a compressão geram uma d.d.p., e quando submetidos a umadiferença de potencial elétrico eles são deformados mecanicamente (efeito piezoelétrico). As dimensõesmecânicas da lâmina do cristal caracterizam a freqüência de oscilação (ressonância) desse cristal. Esta freqüênciade ressonância está compreendida entre 1 kHz até 200 MHz, sendo que até 15 MHz, os cristais trabalham na

Page 27: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

26

executando-a no ciclo de máquina imediatamente adjacente (Ciclo de Execução da instrução).

A Figura 1.3 exemplifica o que foi apresentado acima.

Figura 1.3 – Ciclos de máquina – busca e execução de instruções, (Souza, 2005, p.25)

Para calcular o tempo de cada ciclo de máquina (em cada ciclo é buscada e

executada uma instrução), tendo como base o dispositivo oscilador, por exemplo, um cristal,

basta fazer o seguinte cálculo:

1 Onde: Tcy = Tempo de cada Ciclo de Máquina = 4 x Tosc Tcy = ( fosc/4 ) Tosc = Período do oscilador = 1/ fosc

fosc = Freqüência do oscilador (cristal)

Assim sendo, como foi usado nesse projeto um cristal cuja freqüência é de 4

MHz, implica em um TCY de 1 µs (Souza, 2005, p.24), que é o tempo necessário para a plena

execução da maioria das instruções, pois algumas poucas instruções utilizam dois ciclos de

máquina. Este dado é útil, principalmente, quando o processamento tem compromisso com

freqüência fundamental, enquanto os que trabalham acima dessa freqüência operam com algum dos harmônicos

Page 28: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

27

acontecimentos externos, ou com certos instantes em que um evento acontece, nos quais o

MCU deve ler algum dado vindo de fora para compor ao processamento, ou, ainda, na

construção de sub-rotinas de atraso (delay).

1.1.5 Memória de dados

O fabricante Microchip construiu o banco de Registradores Especiais e de

Propósito Geral em uma memória RAM estática de 512 x 8 bits (endereços de 000h até

1FFh), sendo que 368 desses endereços são para os Registradores de Propósito Geral. Estes

são os lugares onde os programadores constróem suas variáveis ou são os registradores que

são nomeados pelos programadores de forma a que sejam dedicados e orientados à solução de

um problema.

A memória RAM foi dividida em 4 bancos (Banco 0 a Banco3) selecionáveis

pelos bits RP1 e RP0 do registrador STATUS. Assim 00 (RP1=0 e RP0=0) selecionam o

Banco 0; 01 selecionam o Banco1; 10 selecionam o Banco 2; e, por fim, 11 selecionam o

Banco 3. A Figura 1.4 detalha melhor esta memória com os seus respectivos endereços em

hexadecimal e nomes dos registradores especiais, ou SFRs (Special Function Registers),

fornecidos pelo próprio fabricante do MCU (Souza, 2006, p.30).

ímpares. (Gomes, 1985, p.411-413).

Page 29: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

28

Tabela 1.1 – Registradores Especiais e de Propósito Geral – RAM (Microchip, 2003, p.17)

Mapa da memória RAM do PIC16F877A – Registradores Especiais e de Propósito Geral

Reg. End. Reg Reg. End. Reg Reg. End. Reg Reg. End. Reg

INDF(*) 00h INDF(*) 80h INDF(*) 100h INDF(*) 180hTMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181hPCL 02h PCL 82h PCL 102h PCL 182h

STATUS 03h STATUS 83h STATUS 103h STATUS 183hFSR 04h FSR 84h FSR 104h FSR 184h

PORTA(1) 05h TRISA(1) 85h 105h 185hPORTB(1) 06h TRISB(1) 86h PORTB 106h TRISB 186hPORTC 07h TRISC 87h 107h 187hPORTD 08h TRISD 88h 108h 188hPORTE 09h TRISE 89h 109h 189h

PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18AhINTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh

PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18ChPIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2 18Dh

TMR1L 0Eh PCON 8Eh EEDATH 10Eh Reservado (2) 18EhTMR1H 0Fh 8Fh EEADRH 10Fh Reservado (2) 18FhT1CON 10h 90h 110h 190hTMR2 11h SSPCON2 91h 111h 191h

T2CON 12h PR2 92h 112h 192hSSPBUF 13h SSPADD 93h 113h 193hSSPCON 14h SSPSTAT 94h 114h 194hCCPR1L 15h 95h 115h 195hCCPR1H 16h 96h 116h 196h

CCP1CON 17h 97h 117h 197hRCSTA 18h TXSTA 98h 118h 198hTXREG 19h SPBRG 99h 119h 199hRCREG 1Ah 9Ah 11Ah 19AhCCPR2L 1Bh 9Bh 11Bh 19BhCCPR2H 1Ch CMCON 9Ch 11Ch 19Ch

CCP2CON 1Dh CVRCON 9Dh 11Dh 19DhADRESH 1Eh ADRESL 9Eh 11Eh 19EhADCON0 1Fh ADCON1 9Fh

Registradorde PropósitoGeral – 16

Bytes

11Fh

Registrador dePropósito Geral

– 16 Bytes

19Fh20h A0h 120h 1A0h

Registrador dePropósito Geral

– 80 Bytes EFh

Registradorde PropósitoGeral – 80

Bytes 16Fh

Registrador dePropósito Geral

– 80 Bytes 1EfhF0h 170h 1F0h

Registradores de

PropósitoGeral – 96

Bytes7Fh

Acesso70h – 7Fh FFh

Acesso70h – 7Fh 17Fh

Acesso70h – 7Fh 1FFh

Banco 0 Banco 1 Banco 2 Banco 3

Local na memória de dados não implementado, contém nível lógico ´0´. (*) De fato, não é um registrador implementado fisicamente

Notas: (1) Estes registradores não foram implementados no PIC16F876A. (2) Estes registradores são reservados, mantenha-os em nível lógico baixo.

Page 30: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

29

1.1.6 Alguns Registradores Especiais

O microcontrolador PIC16F877A trabalha com registradores orientados a bit, ou

seja, um determinado registrador além de ter um nome para “comunicação” com ele (ler ou

escrever neste registrador como um todo) cada um de seus bits, também, recebe um nome e

pode ser manipulado individualmente (set e/ou reset de um determinado bit).

Os registradores especiais podem ser agrupados em:

a) De uso geral; [tratar-se-á do STATUS, OPTION_REG e do INTCON]

b) Portas; [tratar-se-á das portas e registradores de configuração das portas,

ou sejam, dos TRISx]

c) Temporizadores (ou timers); [não serão tratados neste trabalho]

d) Interrupções; [não serão tratadas neste trabalho]

e) Conversão A/D; [não será tratada neste trabalho]

f) Compare / Capture / PWM, ou CCP; [não serão tratados neste trabalho]

g) EEPROM; [não será tratada neste trabalho]

h) SSP, (Synchronous Serial Port), registradores para comunicação serial

através dos protocolos SPI e I2C. O I2C é utilizado para comunicação

com a memória EEPROM 24LC256, e será aplicado na seqüência

acadêmica deste curso.

i) USART (Universal Synchronous Asynchronous Receiver Transmitter);

[não será tratado neste momento]

j) Comparadores, [não serão tratados neste trabalho]

Page 31: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

30

1.1.6.1 Registradores Especiais de uso geral

a) Registrador STATUS

Esse registrador serve para mostrar o estado da ULA, a forma do último reset e

também para configurar a página de programação atual, quando necessário.

Tabela 1.2 – Registrador STATUS (Microchip, 2006, p.22)

Registrador: STATUS Endereços: 03h, 83h, 103h e 183hBit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0R/W R/W R/W R R R/W R/W R/WIRP RP1 RP0 /TO /PD Z DC C

Condição após reset por Power-On Reset (POR)0 0 0 1 1 X X X

X = irrelevante.

IRP: Bit seletor de banco de memória (é usado para endereçamento indireto)

0 = Banco 0 e 1 ( 00h – FFH ).

1 = Banco 2 e 3 ( 100h – 1FFH ).

RP1 e RP0: Bits para selecionar o banco de memória ativo (para endereçamento direto)

00 = Banco 0 ( 00h – 7Fh).

01 = Banco 1 ( 80h – FFh).

10 = Banco 2 (100h – 17Fh).

11 = Banco 3 (180h – 1FFh). Obs.: Cada banco possui 128 bytes

/TO: Bit que indica a ocorrência de time-out (ou NOT_TO)

0 = indica que ocorreu o estouro de WatchDog Timer (WDT).

1 = Após um power-up, ou após a execução de uma instrução CLRWDT ou SLEEP.

/PD: Bit que indica a ocorrência de power-down (ou NOT_PD)

0 = Indica que a instrução SLEEP foi executada.

1 = Após um power-up, ou após a execução de uma instrução CLRWDT.

Page 32: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

31

Z : Bit que indica uma operação cujo resultado foi igual a Zero

0 = Indica que o resultado da última operação (lógica ou aritmética) não foi zero.

1 = Indica que o resultado da última operação (lógica ou aritmética) resultou em zero.

DC: Bit de Digit Carry / borrow7

0 = A última operação da ULA não ocasionou um estouro de dígito.

1 = A última operação da ULA ocasionou um transporte (carry) entre o bit 3 e 4, isto

é, o resultado ultrapassou os 4 bits menos significativos.

C: Bit de Carry / borrow:

0 = A última operação da ULA não ocasionou um estouro (carry).

1 = A última operação da ULA ocasionou um estouro (carry) no bit mais

significativo, isto é, o resultado ultrapassou os 8 bits disponíveis.

b) Registrador OPTION_REG

Esse registrador é utilizado para configurar alguns periféricos internos do MCU.

Tabela 1.3 – Registrador OPTION_REG (Microchip, 2006, p.23)

Registrador: OPTION_REG Endereços: 81h e 181hBit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0R/W R/W R/W R/W R/W R/W R/W R/W

/RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0Condição após reset por Power-On Reset (POR)

1 1 1 1 1 1 1 1

/RBPU: Bit de habilitação dos pull-ups internos da PORTB:

7 Para /borrow (empréstimo, ou vem-um) a sinalização é contrária. Uma subtração é executada por uma adiçãodo minuendo ao complemento a dois do subtraendo. Ao deslocar bit-a-bit o conteúdo de um registrador(instruções RRF e RLF). Os bit C assume diversos valores, seja zero ou um advindo de uma fonte. Os bits C eDC operam como um /borrow e /digit borrow, respectivamente nas subtrações.

Page 33: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

32

0 = Pull-ups internos da PORTB habilitados em todos os seus pinos.

1 = Pull-ups internos da PORTB desabilitados.

INTEDG: Bit de seleção da transição (edge) ou borda que gerará uma interrupção externa

pelo pino RB0/INT.

0 = A interrupção ocorrerá na borda de descida.

1 = A interrupção ocorrerá na borda de subida.

T0CS: Bit de seleção da fonte de clock que incrementará o temporizador TMR0.

0 = TMR0 será incrementado internamente pelo clock da máquina.

1 = TMR0 será incrementado externamente pela mudança no pino RA4/T0CKl.

T0SE: Bit de seleção da borda (edge) que incrementará o TMR0, quando T0CS =1.

0 = O incremento ocorrerá na borda de subida no pino RA4/T0CKl.

1 = O incremento ocorrerá na borda de descida no pino RA4/T0CKl..

PSA: Bit que configura a qual dispositivo será aplicação o prescaler.

0 = O prescaler será aplicado ao módulo TMR0.

1 = O prescaler será aplicado ao WDT.

PS2: PS0 Bits para a seleção da taxa do prescaler.

Tabela 1.4 – Bits PS2, PS1 e PS0

Bits 2, 1, 0 TMR0 WDT0 0 0 1:2 1:10 0 1 1:4 1:20 1 0 1:8 1:40 1 1 1:16 1:81 0 0 1:32 1:161 0 1 1:64 1:321 1 0 1:128 1:641 1 1 1:256 1:128

Page 34: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

33

1.1.6.2 Registrador INTCON

Esse registrador serve para configurar e identificar as interrupções.

Tabela 1.5 – Registrador INTCON (Microchip, 2006, p.24)

Registrador: INTCON Endereços: 0BH e 8BHBit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0R/W R/W R/W R/W R/W R/W R/W R/WGIE EEIE T01E INTE RBIE T0IF INTF RBIF

Condição após reset por Power-On Reset (POR)0 0 0 0 0 0 0 X

X = irrelevante.

GIE: Habilitação geral das interrupções (chave geral):

0 = Nenhuma interrupção será tratada.

1 = As interrupções habilitadas individualmente serão tratadas.

EEIE: Habilitação da interrupção de final de escrita na EEPROM (chave individual)

0 = A interrupção não será tratada.

1 = A interrupção será tratada.

T0IE: Habilitação da interrupção de estouro de TMR0 (chave individual):

0 = A interrupção não será tratada.

1 = A interrupção será tratada

INTE: Habilitação da interrupção externa no pino RB0 (chave individual)

0 = A interrupção não será tratada.

1 = A interrupção será tratada

RBIE: Habilitação da interrupção por mudança de estado nos pinos RB4 a RB7 (chave

individual)

0 = A interrupção não será tratada.

1 = A interrupção será tratada.

T0IF: Identificação da interrupção de estouro de TMR0:

0 = Esta interrupção não ocorreu.

Page 35: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

34

1 = Esta interrupção ocorreu.

INTF: Identificação da interrupção externa no pino RB0:

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

RBIF: Identificação da interrupção por mudança de estado nos pinos RB4 a RB7:

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

1.1.6.3 Registradores Especiais, PORTx e TRISx8

Estes registradores são muito importantes para comunicação externa da MCU. Os

registradores TRISx configuram os registradores das portas PORTx (sendo que x pode ser de

A até E). Configurar uma porta é o mesmo que carregar em TRISx o perfil de trabalho desta

porta, ou seja, como cada um de seus bits (ou pinos) trabalharão, se como entrada ou como

saída. Os registradores PORTx enviam dados para fora do MCU (pinos configurados como

saída) ou recebem dados do exterior para serem processados (pinos configurados como

entrada).

Para que um registrador TRISx configure os pinos da porta PORTx como entrada

ou saída, deve-se colocar “1” em um bit do TRISx e o pino referente à posição deste “1” na

PORTx ficará configurado como entrada. Igualmente se faz para configurá-lo para saída, mas,

agora, em vez de “1” é “0”. Esta configuração das portas não se faz em um bit somente, e sim

em todo o byte referente a uma determinada porta. Para configurar a PORTA, deve ser

utilizado o TRISA, e para configurar o PORTB, deve ser utilizado o TRISB, e assim

sucessivamente.

8 Microchip, 2006, p.41-50

Page 36: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

35

Tabela 1.6 – Registrador TRISx

Registrador: TRISx Endereços: Ref. a cada TRISxBit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0R/W R/W R/W R/W R/W R/W R/W R/WRef.Rx7

Ref.Rx6

Ref.Rx5

Ref.Rx4

Ref.Rx3

Ref.Rx2

Ref.Rx1

Ref.Rx0

Tabela 1.7 – Registrador PORTx

Registrador: PORTx Endereços: Ref. A cada PORTx.Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0R/W R/W R/W R/W R/W R/W R/W R/WRx7 Rx6 Rx5 Rx4 Rx3 Rx2 Rx1 Rx0

As portas PORTA, e PORTE não têm todos os bits: a primeira comporta RA5 a

RA0; a segunda comporta apenas RE2 a RE0. Deve-se observar que a PORTE utiliza os bits 4

a 7 para outras sinalizações, as quais não serão tratadas aqui. As demais portas, isto é, as

portas PORTB, PORTC e PORTD encerram, cada uma delas, todos os seus 8 bits.

Os registradores especiais mostrados acima suportam quase a totalidade do

projeto, exceto que os registradores envolvidos na realização do protocolo de comunicação

I2C, utilizados na sub-rotina de leitura/escrita de dados na memória serial 24LC256

(fabricante, Microchip), serão apresentados no momento da construção da referida sub-rotina,

enfocadas na seqüência acadêmica deste curso.

1.1.7 A Memória de Programa e a Pilha (Stack)

A Figura 1.4 mostra a estrutura da memória de programa e da pilha. A pilha é um

lugar em memória RAM onde se carrega temporariamente o endereço de retorno ao programa

principal após o MCU ter executado uma instrução como, por exemplo, o CALL, ou atendeu

a um pedido de interrupção, ambos quebrando a seqüência normal do processamento. A pilha

Page 37: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

36

trabalha sob o procedimento operacional designado por LIFO, ou o último dado a entrar na

pilha é o primeiro a sair dela. Deve-se observar que a pilha somente tem oito níveis, o que é

um agravante e deve-se atentar para que isso não cause um problema real ao projeto.

Figura 1.4 – Memória de Programa e Pilha. (Microchip, 2003, p.15)

O MCU, quando é resetado, inicia a contagem do PC em 0000h. Este contador

endereça a memória de programa e a cada 1µs (quando o cristal é de 4MHz) ele é

incrementado, apontando para a próxima instrução ou para o próximo endereço da memória

de programa. Em cada endereço reside um OPCODE (ou código objeto) e o seu operando. O

endereço 0004h é onde se inicia a construção da rotina para o atendimento de uma

interrupção, como pode ser verificado na Figura 1.4.

Page 38: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

37

A memória de programa do PIC16F877A é de 8k x 14 bits (ou 8k palavras de 14

bits), o que é suficiente para a confecção deste projeto.

1.1.8 Conjunto das instruções

As instruções assembly, da família PIC da Microchip, foram construídas apoiadas

em mnemônicos que facilitam ao programador nessa linguagem a se lembrar do que cada

instrução de fato realiza. Para este fim, deve-se reconhecer o significado de algumas letras

incorporadas aos mnemônicos, como: W, diz respeito ao registrador Work; F, de File, diz

respeito, genericamente, a algum dos registradores, sendo que quando for minúsculo (f)

refere-se ao conteúdo do registrador F; L, de Literal, refere-se a um valor numérico que fará

parte da operação realizada pela instrução; d (minúsculo) é o lugar onde o resultado da

operação será armazenado - se d=0 implica que o resultado da operação será armazenado em

W e se for 1 será armazenado no registrador F indicado na própria instrução; B, de Bit -

quando maiúsculo, o B compõe o nome da instrução, ou o seu mnemônico, e quando

minúsculo o b refere-se a um bit específico dentro do byte e, portanto, é o argumento da

instrução; T, de Test, é usado no mnemônico de algumas instruções para indicar que a

instrução realiza um teste de bit em um determinado registrador e em um bit específico deste

registrador; S, de Skip (salto) ou Set (forçar valor para 1) - aqui o fabricante usou a mesma

letra para dois sentidos diferentes, resta ao programador somente se acostumar com as

instruções que assim tratam; C, de Clear - refere-se ao reset de um bit (ou fazê-lo passar ao

nível lógico baixo, ou zero); e, por fim, Z, de Zero - caso o resultado de uma operação seja

zero, então Z=1 no registrador STATUS (lembrando que algumas instruções promovem

desvios sob esta condição ter sido verdadeira).

Os outros termos utilizados referem-se às ações realizadas pelas instruções, como

mostrados abaixo.

Page 39: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

38

ADD: Soma aritmética;

AND: Lógica E;

CLR: Zera o conteúdo, ou reseta;

COM: Complementa um registrador;

DEC: Decrementa um registrador, ou subtrai 1 desse registrador;

INC: Incrementa um registrador, ou soma 1 a este registrador;

IOR: Lógica OU;

MOV: Mover, ou melhor, copia um valor para algum lugar;

RL: rodar 1 bit à esquerda (Rotation Left);

RR: rodar 1 bit à direita (Rotation Right);

SUB: Subtração aritmética;

SWAP: Inversão de nibbles, da parte alta para a parte baixa e vice-versa, de um

registrador;

XOR: Lógica OU EXCLUSIVO.

O PIC16F877A é uma arquitetura RISC, como já foi dito, e apenas 35 instruções

assembly são reconhecidas por ele, as quais são mostradas na seqüência (Microchip, 2006,

p.159-164)

Tabela 1.8 – Instruções do PIC – Operações orientadas a bit.

Operações orientadas a bit.14 bits de códigoInstrução Argumentos,

operandosOperação Simbólica Ciclos de

máquina MSB LSBFlags

afetadosBCF f,b Reseta o bit b do reg. f 1 01 00bb bfff ffff -BSF f,b Seta o bit b do reg. f 1 01 01bb bfff ffff -BTFSC f,b Testa o bit b do reg. f e

salta a próxima instruçãose ele for zero.

1 01 10bb bfff ffff -

BTFSS f,b Testa o bit b do reg. f esalta a próxima instruçãose ele for um.

1 01 11bb bfff ffff -

Page 40: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

39

Tabela 1.9 – Instruções do PIC – Operações para diversos controles.

Operações para diversos controles14 bits de códigoInstrução Argumentos,

operandosOperação Simbólica Ciclos de

máquina MSB LSBFlags

afetadosCLRW W reseta W 1 00 0001 0000 0011 ZNOP No Operation, perde 1µs

qdo. cristal for de 4MHz.1 00 0000 0xx0 0000

CALL K Chama sub-rotina pelorótulo K.

2 10 0kkk kkkk kkkk

CLRWDT WDT reseta contadorWDT.

1 00 0000 0110 0100 /TO, /PD

GOTO K Vá para endereço K ourótulo K.

2 10 1kkk kkkk kkkk

RETFIE Retorna após atendimentoa uma interrupção.

2 00 0000 0000 1001

RETLW K Retorna de uma sub-rotinafazendo W K

2 11 01kk kkkk kkkk

RETURN Retorna de uma sub-rotina 2 00 0000 0000 1000SLEEP Põe o PIC na condição de

economia de energia,mode standby.

2 00 0000 0110 0011 /TO, /PD

x = don´t care, ou irrelevante.

Tabela 1.10 – Instruções do PIC – Operações orientadas a byte.

Operações para controles diversos – operações orientadas a byte14 bits de códigoInstrução Argumentos,

operandosOperação Simbólica Ciclos de

máquina MSB LSBFlags

afetadosADDWF f,d d W + f 1 00 0111 dfff ffff C, DC, ZANDWF f,d d W AND f 1 00 0101 dfff ffff ZCLRF f F reseta f 1 00 0001 1fff ffff ZCOMF f,d d complementa f 1 00 1001 dfff ffff ZDECF f,d d f – 1 1 00 0011 dfff ffff ZDECFSZ f,d d f – 1 e salta próxima

instrução se esta subtraçãoresultou em zero.

1 qdo nãopula;

2 qdo pula.

00 1011 dfff ffff -

INCF f,d d f + 1 1 00 1010 dfff ffff ZINCFSZ f,d d f + 1 e salta próxima

instrução se esta somaresultou em zero.

1 qdo nãopula;

2 qdo pula.

00 1111 dfff ffff -

IORWF f,d d W OR f 1 00 0100 dfff ffff ZMOVF f,d d f 1 00 1000 dfff ffff ZMOVWF f f W 1 00 0000 1fff ffff -RLF f,d Rotaciona o reg. f um bit

à esquerda, com o carry.1 00 1101 dfff ffff C

RRF f,d Rotaciona o reg. f um bità direita, com o carry.

1 00 1100 dfff ffff C

SUBWF f,d d f – W 1 00 0010 dfff ffff C, DC, ZSWAPF f,d Troca de nibbles em f. 1 00 1110 dfff ffff -XORWF f,d d W XOR f 1 00 0110 dfff ffff Z

Page 41: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

40

Tabela 1.11 – Instruções do PIC – Operações com valores numéricos.

Operações com valores numéricos.14 bits de códigoInstrução Argumentos,

operandosOperação Simbólica Ciclos de

máquina MSB LSBFlags

afetadosADDLW k W W + k 1 11 111x kkkk kkkk C, DC, ZANDLW k W W AND k 1 11 1001 kkkk kkkk ZIORLW k W W OR k 1 11 1000 kkkk kkkk ZMOVLW k W k 1 11 00xx kkkk kkkk -SUBLW k W k – W 1 11 110x kkkk kkkk C, DC, ZXORLW k W W XOR k 1 11 1010 kkkk kkkk Z

x = don´t care, ou irrelevante.

1.2 Comunicação externa através do LCD

A comunicação externa por meio de um display de cristal líquido (LCD) pode ser

realizada através de um barramento de dados de 8 ou mesmo de 4 bits (Zanco, 2006, p.79).

Além deste barramento é necessário utilizar mais dois terminais, os quais são designados por:

RS(Register Select), E(Enable). Portando, esta comunicação demandará, no melhor dos casos

tratados na literatura, de 6 portas de I/O do PIC, isto é, 4 para dados, RS e E. Mas, como ainda

se tem dúvidas quanto as necessidades de recursos do PIC nos próximos desenvolvimentos

deste trabalho, preferiu-se fazer uso da comunicação serial entre o PIC e o LCD, através do

registrador de deslocamento (shift register) 74164, o que permitiu a redução de outras duas

portas de I/O do PIC. Portanto, resultou num consumo mínimo dessas portas, ou sejam,

utilizou-se apenas 4 portas de I/O do MCU, conforme mostrado na Tabela 1.12.

Tabela 1.12 – Pinos do PIC para comunicação com o LCD.

Pino (designaçãoterminal) do PIC.

Nome da variávelusada no assembly.

Pino (designaçãoterminal) do CI 74164.

Pino (designaçãoterminal) do LCD.

7 ( RA5) Dserie 1 (Serial input A)24 (RC5) Ck 8 (clock)

( * )

15 (RC0) ENABLE - 6 (E)16 ( RC1) RS - 4 (RS)

(*) Após 8 pulsos de clock o dado terá sido totalmente transmitido e se encontrará na forma paralela, ou seja,cada bit já se encontrará devidamente posicionado ao respectivo terminal de dado do LCD (pinos 7 a 14).

Page 42: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

41

1.2.1 O Display de Cristal Líquido (LCD)

O display (ou visor) de cristal líquido (LCD) é um dispositivo usado para a

comunicação máquina-homem, ou seja, ele é um dispositivo de saída de informação

alfanumérica. Ele é composto por alguns terminais de entrada de dados (designados por DB7 a

DB0; estes dados devem estar codificados em ASCII9), de comandos [designados por

RS(Register Select), R/W(Read/Write), E(Enable)], de alimentação [VDD(+5Vcc) e

VSS(GND)], de terminal para ajuste de contraste (designado por V0), e terminais para ligação

da iluminação de fundo (LED para Backlight) designados por A(Anode) e K(Katode) (Zanco,

2006, p.78). Estes terminais estão ligados a seu drive de controle interno, o qual aceita

comandos externos para a realização de todas suas funções. A Figura 1.5 ilustra o visual

externo do LCD e a Tabela 1.13 caracteriza melhor os referidos terminais.

Fixou o pino 5 (R/W) no nível lógico baixo (GND) e com isto fez-se todos os

terminais do LCD serem de entrada, o que é o mesmo que serem terminais para escrita neste

dispositivo. O sinal no pino RS varia segundo o que se deseja executar. Assim, quando RS = 0

implicará que o dado presente no barramento de dados (DB7 a DB0) é um comando que o PIC

enviou ao LCD, e que será reconhecido pelo LCD tão logo o PIC habilite o pino E (Enable) o

que se faz gerando um pulso neste pino, ou fazendo-o variar de 0 → 1 → 0. E, quando o RS =

1 implicará que o dado presente no barramento de dados (DB7 a DB0) é um caracter que o PIC

deseja que o LCD externe pelo seu visor, o que acontecerá, obviamente, quando o PIC, tal

como já mencionado, habilite o pino E (Enable).

Page 43: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

42

Figura 1.5 – Lay-out externo do LCD 2 linhas x 16 colunas

Tabela 1.13 – Caracterização dos pinos do LCD (Agena, 1995, p.7)

Númerodo Pino

DesignaçãoNome do pino

Função do Pino

1 VSS Ground ou Terra, ligado ao terra da fonte de alimentação2 VDD ( 3 a 5 Vcc) – ligado ao +5Vcc da fonte de alimentação.3 V0 Ligado ao terminal central de um resistor variável de 10kΩ

cujos extremos devem ser ligados a VDD e VSS. Para contraste.4 RS 1 = entrada, ou escrita, de dados; 0 = entrada de comandos5 R/W 1 = leitura de dados; 0 escrita de dados6 E 1 = habilitado; 0 = desabilitado.7 DB08 DB19 DB2

10 DB311 DB412 DB513 DB614 DB7

Barramento de dados.

15 A ( + ) Anodo do LED luz de fundo16 K ( - ) Catodo do LED luz de fundo.

Sabe-se que o dispositivo LCD é, também, um dispositivo microcontrolado. Este

microcontrole é realizado pelo seu drive, citado anteriormente. E por ser microcontrolado é

preciso iniciá-lo, ou seja, deve-se enviar alguns comandos que o dizem como o programador

9 Encontra-se uma tabela ASCII em Ciarcia (1984, p.220-222).

Page 44: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

43

deseja utilizá-lo. Neste projeto utilizou-se o display configurado para trabalhar recebendo 8

bits de dados, resultando na inicialização mostrada na Figura 1.6.

Figura 1.6 – Fluxograma - Inicialização do LCD (Agena, 1995, p.11)

Page 45: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

44

Deve-se observar que, quando for enviar algum comando ao LCD, o terminal RS

deve estar em nível lógico baixo (RS=0), como mostrado no fluxograma da Figura 1.6. Além

disso, quando for enviar algum dado (ASCII) para ser externado via visor, o terminal RS deve

estar em nível lógico alto (RS=1).

1.2.2 O Registrador de deslocamento, circuito integrado 7416410

Neste item tratar-se-á do registrador de deslocamento, com entrada de dados serial

e saídas paralelas (shift register SIPO – Serial Input, Parallel Output), tipo 74164, construído

com tecnologia TTL. É um componente composto por: duas entradas seriais e oito saídas

paralelas; um clock gatilhável na transição positiva (edge positivo), ou seja, as mudanças de

estado das saídas de dados (saídas dos flip flops) ocorrerão quando o clock variar do nível

lógico baixo para o alto (ou de 0 para 1); uma entrada para clear e duas para alimentação do

componente (+5Vcc e GND), como está ilustrado na Figura 1.7.

Figura 1.7 – Lay-out do CI 74164, shift register.

10 Fairchild, 2000, p.1-5 e Melo, 1993, p. 292-293.

Page 46: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

45

Os dados nas entradas seriais A e B da Figura 1.7 devem ser mudados no

momento em que o sinal de clock se encontrar no nível lógico alto (clock = 1). É importante

observar que todas as saídas dos flip flops serão resetadas quando o nível lógico da entrada

clear for baixo (ou 0), ou ainda, quando clear = 0 implicar que QA a QH vão para zero (Tabela

1.14 e Figura 1.8). A propósito, a saída QA é a menos significativa, enquanto a QH é a mais

significativa.

Tabela 1.14 – Tabela de funcionamento do CI 74164

Entradas SaídasClear Clock A B QH ... QB QA

0 X X X 0 ... 0 01 L X X QH0 ... QB0 QA01 ↑ 1 1 QGn QAn 11 ↑ 0 X QGn QAn 01 ↑ X 0 QGn QAn 0

Obs.: Trabalhou-se com o terminal B e Clear ligados, via resistores de 1kΩ, ao+5Vcc, portanto B = 1.X = don´t care, ou irrelevante.QH0 . . . QB0 QA0 → é o nível das saídas QH a QA, respectivamente, antes de estarestabilizado o estado lógico das entradas.QGn . . . QAn → é o nível das saídas QG a QA antes da mais recente transição doclock ( ↑ ) indicando que um bit foi deslocado..

ClearSerial A

Serial B Clock

QA QB QC QD QE QF QG QH

Clear Clear

Figura 1.8 – Formas de onda do CI 74164 – domínio do tempo.

Page 47: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

46

Pode-se observar na Figura 1.8 que, após o nível lógico da entrada serial B ser

alto, o dado presente na entrada serial A será deslocado bit-a-bit, a cada variação de subida do

sinal clock, nas saídas QA a QH,. Então, é de fácil conclusão que se um byte for apresentado,

bit-a-bit, à entrada serial A, e se em cada um dos bits apresentados o sinal de clock tiver uma

subida de zero para um, segue-se que após o oitavo pulso de clock o referido byte estará

presente nas saídas QA a QH, ou seja, realizou-se uma transferência série-paralelo da entrada

serial A para as saídas QA a QH.

Uma vez entendida a transferência de dados acima, fica fácil, em termos de

hardware, a ligação CI 74164 com o LCD, como está ilustrado na Tabela 1.15.

Tabela 1.15 – Ligação do CI 74164 com o LCD (dados).

Dispositivo PINOS interconectadosQH QG QF QE QD QC QB QACI 74164

Pinos → 13 12 11 10 6 5 4 37 8 9 10 11 12 13 14Pinos →

LCD DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7

Pode-se observar, na Tabela 1.15, que não respeitou a ligação bit menos

significativo do 74164 (QA) com o menos significativo do LCD (DB0). Esta inversão foi

percebida somente quando a placa PCI (Placa de Circuito Impresso) já havia sido

confeccionada. Mas, isto de fato, como poder-se-á verificar (Capítulo 2). Uma simples

adaptação do software, ou seja, em vez de começar enviando o bit mais significativo do byte

enviou-se o menos significativo, e assim sanou-se o problema de hardware.

Page 48: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

47

1.3 Motor de Passo

Os motores de passo são dispositivos eletromecânicos rotativos cuja rotação,

diferentemente dos motores de contínua rotação quando devidamente alimentados, se faz por

passos. Entende-se por passo um deslocamento circular parcial (incrementos discretos) ou que

perfaz um determinado ângulo mecânico, menor que uma volta completa do seu eixo

(revolução).

1.3.1 Aplicação

Os motores de passo são aplicados em projetos que necessitam de controlar o

movimento ou a posição física de um mecanismo. Este controle é realizado pela eletrônica

digital através de certa seqüência de código padronizada. Este código é gerado, neste projeto,

por um circuito específico de driver (controle/potência) e o microcontrolador PIC16F877A, o

qual fornece o clock e o sentido da rotação do motor. Os motores de passo são encontrados

em vários periféricos de computadores como impressoras, unidades de disco flexíveis e

rígidos (drive), registradores gráficos (plotters), e, também, na automação industrial são

encontrados nos robôs.

1.3.2 Caracterização, tipos e funcionamento básico

Os motores de passo têm como características básicas: (a) girarem em ambos os

sentidos; (b) promoverem passos incrementais bastante precisos (probabilidade de erro de

passo, não cumulativo, é menor que 5%) (Minebea, 2002); (c) serem controlados pela

eletrônica digital por implementação bem simples (estes motores têm comportamento

previsível, o que dispensa o uso de elemento de realimentação, ou o seu controle pode ser

realizado em malha aberta); (d) não usam escovas; (e) possíveis estados para o motor de

Page 49: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

48

passo: ou o motor está parado, ou alimentado com o rotor travado (torque de sustentação), ou

se encontra girando a passos discretos em um dos sentidos, horário ou anti-horário; (f)

conseguem girar a velocidades síncronas muito baixas; e por fim, (g) têm excelente resposta,

ou seja, giram em um sentido, param, e giram no outro sentido sem nenhuma dificuldade.

Geralmente, os motores de passo são fabricados de forma a perfazerem 12, 24, 72,

144, 200 e 500 passos/volta (ou revolução), os quais, respectivamente, em termos de graus

mecânicos, referem-se a: 30; 15; 5; 2,5; 2; 1,8 e 0,72o graus (Jones, 1995).

Os motores de passo podem ser de três tipos: o de imã permanente, o de relutância

variável e o híbrido. Os de imã permanente têm o rotor magnetizado, enquanto os de

relutância variável o rotor é constituído em ferro doce (soft-iron), e os motores híbridos são

uma combinação dos dois primeiros. A parte estática do motor, chamada de estator, é o lugar

onde se aloja suas bobinas. Dependendo de como estas bobinas são arranjadas no estator, elas

promoverão campos eletromagnéticos inerentes que distinguirão os tipos de motores de passo

(Microchip, 2004). Os motores de ímã permanente e híbrido podem ser construídos com

bobinas unipolar ou bipolar, de forma que cada tipo produza específicos campos magnéticos

girantes no estator.

Neste trabalho tratar-se-á do motor de passo unipolar e híbrido, cujas

características elétricas são: (12Vcc; 0,6A; 20 Ω)/fase, o qual necessita de 200 passos/volta

(ou avança 1,8o a cada passo), sendo um dos motores mais comuns do mercado.

O motor de passo unipolar e híbrido é constituído por (a) duas bobinas em seu

estator, sendo ambas com uma derivação central, ou center tap, e (b) um rotor composto por

material de relutância variável e permanentemente magnetizado, combinação que melhora os

torques do motor (seja o residual, o de sustentação, ou os dinâmicos), comparativamente se o

motor fosse só de relutância variável ou só de imã permanente. Assim sendo, pode-se

encontrar este motor no mercado com 5 ou 6 terminais externos. Quando as derivações

Page 50: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

49

centrais forem conectadas internamente, externando apenas uma delas, ter-se-á um motor com

5 terminais. Essas derivações centrais são, geralmente, ligadas ao pólo positivo da fonte de

alimentação (a exemplo do +12Vcc), enquanto que os demais terminais são chaveados por

transistores de potência com emissores aterrados. Este chaveamento segue um código binário

preestabelecido (Tabela 1.16), o qual condiciona o funcionamento do motor de passo, uma

vez que seguindo esse código as bobinas produzirão um campo magnético girante (no sentido

horário ou anti-horário) que arrasta consigo – acoplamento magnético – o rotor magnetizado

(imã permanente) no mesmo sentido do referido campo girante.

Tabela 1.16 – Código binário que aciona o motor de passo unipolar11.

Bobinas B3 B2 B1 B0 Hexa Sentidohorário

Sentido Anti-horário

1o passo 0 0 1 1 032o passo 1 0 0 1 093o passo 1 1 0 0 0C4o passo 0 1 1 0 06

1.3.3 Escolhendo um motor de passo.

Os motores de passo, como já foi dito, são dos tipos: (a) de Relutância Variável;

(b) de Imã Permanente; (c) Híbrido. Em todos eles somente o estator é bobinado, portanto,

não têm escovas. Os seus rotores são de ferro-doce, de imã permanente, ou um combinado

dos dois, respectivamente. Eles podem ser unipolar ou bipolar. O bipolar pode ter até 30% a

mais de torque que o unipolar, pois as bobinas do motor bipolar são totalmente energizadas,

enquanto o unipolar só a metade é energizada de cada vez. Mas, deve-se relevar que o driver

de controle do motor unipolar é mais simples que o bipolar.

11 Nicolosi, (2005, p.95).

Page 51: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

50

Para a escolha de um motor de passo para uma específica aplicação deve-se

considerar os seguinte fatores (Microchip, 2004): (1) o tipo do motor; (2) o torque que a

aplicação requererá; (3) a complexidade do circuito e programa de controle; (4) as

características físicas do motor.

1. Relutância Variável,

2. Imã Permanente,

(a) Tipo do motor:

3. Híbrido.

4. Unipolar ou Bipolar.

Uma vez determinado o tipo de motor a ser utilizado, tem-se, ainda que decidir

sobre as características funcionais que condizem com a aplicação.

1. A resolução;

2. O torque;

(b) Características 3. O ambiente de operação;

Funcionais 4. A vida útil;

5. As dimensões físicas;

6. Máxima velocidade de operação (em rpm ou em pps).

As referências inerentes aos itens 3 a 6 não serão tratados; relevar-se-á os itens 1 e

2 apenas.

A resolução de um motor de passo diz respeito ao tamanho do passo (ângulo

descrito) ou à quantidade de passos que o referido motor deve dar para promover uma volta

completa do seu eixo. É um dos fatores cruciais na escolha do motor associado a um projeto,

pois o projeto deve se ater a estes incrementos de movimento. A cada passo executado, o eixo

Page 52: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

51

do motor desloca de um determinado ângulo. Este deslocamento é conhecido como ângulo do

passo, sendo repetido precisamente a cada novo passo dado. A Tabela 1.17 reporta

esquematicamente os valores de ângulo do passo com a quantidade de passos necessários para

cada revolução (Jones, 1995).

Tabela 1.17 – Ângulo do Passo e respectivos Passos por Volta.

Ângulo do passo 0,72o 1,8o 2,0o 2,5o 5,0o 7,5o 15,0o

Passos por volta 500 200 180 144 72 48 24

O torque é um outro fator crítico na escolha de um motor de passo para uma

determinada aplicação. Os motores de passo têm diferentes tipos de torque (Microchip, 2004):

(a) Holding torque – ou torque de bloqueio ou de sustentação ou torque estático máximo:

é o máximo torque externo aplicado ao eixo do motor, mantendo suas bobinas energizadas

à velocidade de 0 pps, mas sem a promoção de nenhuma rotação deste eixo. Pela Figura

1.9 pode-se verificar o exposto acima.

(b) Pull-in torque – ou torque de partida ou arranque: é o torque que refere à partida do

motor, ou seja, que o tira do repouso juntamente com a carga mecânica acoplada ao seu

eixo. Ou, ainda, é o torque contra o qual um motor pode acelerar a partir de uma posição

de repouso sem perder nenhum passo e controlado por uma velocidade constante (pps).

Este torque é dinâmico, ou seja, ele é função da velocidade do motor o que delimita a

região chamada por parada-partida, mostrada na Figura 1.9.

(c) Pull-out torque – ou torque de operação ou andamento: é o torque, a uma determinada

velocidade de operação, que põe em movimento uma carga mecânica acoplada ao eixo do

motor. Este torque é dinâmico, ou seja, ele é função da velocidade do motor. Isto delimita

a região de máxima operação do motor sem perda de passo, que é dado pela curva de

torque pull-out, mostrada na Figura 1.9.

Page 53: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

52

(d) Detent torque – ou torque residual: é o torque requerido para rodar o eixo de um motor

de passo enquanto suas bobinas não estão energizadas. Este torque ocorre somente nos

motores de imã permanente ou híbridos.

Figura 1.9 – Identificação dos torques dos motores de passo (curvas genéricas)12.

Os projetos devem respeitar os torques pull-in e pull-out para evitar perdas de

passos, o que, caso ocorra, implica na perda do controle da posição em que o sistema se

encontra. O torque de arranque (pull-in) tem forte relação com o momento de inércia da carga

mecânica acoplada ao eixo do motor de passo.13

Para dimensionar um motor de passo é recomendado que o mesmo trabalhe entre

40 e 60% de seu torque, o que influi diretamente na sua vida útil (Microchip, 2004, p.7).

12 Minebea, 2002 – Glossário.13 I = ρ2m, onde: I = momento de inércia em relação ao eixo de rotação; ρ = raio do centro de rotação à massa m.“No limite do contínuo I=∫ρ2dm, que é o momento de inércia do corpo rígido em relação ao eixo de rotação. Paracalcular I, temos de multiplicar cada elemento de massa dm do corpo por ρ2, onde ρ é a distância de dm ao eixode rotação, e integrar sobre todo o corpo.” Por analogia, a massa está para um movimento unidimensional, assimcomo o momento de inércia está para a rotação em torno de um eixo fixo. Nussenzveig (2002, p.248-250).

Page 54: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

53

Os fabricantes de motor de passo fornecem as curvas de torque e alguns dados

relevantes, como pode-se verificar, por exemplo, na Tabela 1.18 e na Figura 1.10, os dados

fornecidos pelo fabricante Minebea Co., Ltd.

Tabela 1.18 – Dados relevantes de alguns motores de passo.

Model StepAngle

DriveSequence

RatedCurrent

Resistance

HoldingTorque

Inductance

RotorInertia

DetentTorque

Mass

(deg) (A) (Ohms) (mNm) (mH) (g . cm2) (mNm) (g)

23KM-K044U 1.8 UNI-POLAR 3 0.85 760 1.8 200 25 68023KM-K055U 1.8 UNI-POLAR 1.5 3.3 760 6.7 200 25 68023KM-K144U 1.8 UNI-POLAR 3 1.0 1050 2.2 290 49 90023KM-K155U 1.8 UNI-POLAR 1.5 3.9 1050 8.0 290 49 90023KM-K249U 1.8 UNI-POLAR 2 1.2 420 1.9 120 20 47023KM-K255U 1.8 UNI-POLAR 1.5 2.3 420 3.6 120 20 47023KM-K349U 1.8 UNI-POLAR 2 1.5 650 2.9 180 29 59023KM-K355U 1.8 UNI-POLAR 1.5 2.9 650 5.5 180 29 59023KM-K744U 1.8 UNI-POLAR 3 1.15 1200 2.7 360 51 105023KM-K755U 1.8 UNI-POLAR 1.5 4.6 1200 10.2 360 51 1050

Figura 1.10 – Exemplos de curvas de torque de alguns motores de passo.

Page 55: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

54

Capítulo 2. MATERIAIS E MÉTODOS

Este trabalho focou na construção de uma infra-estrutura mecânico-eletrônica

pautada em três distintos momentos: (1) a construção de uma estrutura mecânica que

comporte uma mesa, a qual se move devido ao acoplamento haste com rosca sem fim e porca,

esta fixada ao corpo da mesa e aquela, ao eixo do motor de passo, sendo que, a cada revolução

completa do eixo do motor (200 passos) a mesa move-se de um passo da rosca sem fim; (2)

desenvolvimento de três lay-outs de circuitos eletrônicos e suas respectivas placas de circuitos

impressos (PCI): (a) placa do circuito da fonte de alimentação, (b) placa do driver para

controle do motor de passo e (c) placa principal. Esta, por sua vez, abriga: (a) o

microcontrolador PIC16F877A, (b) o LCD (display de cristal líquido), (c) um pequeno

teclado, (d) um banco de memória EEPROM serial (24LC256), (e) um conector contendo o

sinal de clock e direção (controlados pelo microcontrolador) injetados na placa do driver do

motor de passo (cada variação do sinal de clock gera um passo do motor) e (f) terminal para

conexão do relé reed (acionado por um imã permanente fixado no corpo da mesa móvel) cuja

sinalização indicará a posição inicial da mesa; (3) diversos softwares básicos em linguagem

de programação assembly.

2.1 Hardware – circuitos eletro-eletrônicos

2.1.1 Fonte de alimentação

Desenvolveu-se uma fonte de alimentação comum. Foi utilizado um trafo

[(110/220)V / (9+9)V e 2 A], retificação em ponte a base de diodos, um filtro capacitivo e

reguladores 7805 (saída +5Vcc, alimentação dos circuitos TTL e microcontrolador) e 7812

(saída +12Vcc para alimentação do motor de passo). A Figura 2.1 ilustra o acima

mencionado.

Page 56: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

55

Figura 2.1 – Circuito da fonte de alimentação.

2.1.2 Motor de passo

Utilizou-se um motor de passo fabricado pela MINEBEA CO., LTD tipo 23LM-

K005-25. Este motor de passo foi largamente utilizado nas antigas impressoras matriciais e,

hoje em dia, tem-se relativa facilidade de encontrá-los no comércio. A Tabela 2.1 e Figura

2.2, mostram as características do motor utilizado14.

Tabela 2.1 – Dados relevantes do motor de passo usado no projeto.

MINIANGLE STEPPER - Modelo no.: 23LM-K005

Descrição Dado Descrição DadoDiâmetro do motor 2,3 polegadas Resistência por fase 20 Ω

Peso 560 g Torque residual(Detent Torque)

360 g.cm ou35 mNm (*)

Ângulo do passo 1,8o / passo Torque de sustentação(Holding Torque)

4.700 g.cmou

460 mNm(*)Tensão por fase 12 V Indutância 40 mH

Corrente por fase 0,6A Inércia do rotor 160 g.cm2

(*) 1g.cm = 9,80665.10-5 N.m

Page 57: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

56

Figura 2.2 – Curvas dos torques dinâmicos do motor de passo 23LM-K005.

Na Figura 2.3 tentou-se reconstruir o significado do código numérico dado pelo

fabricante ao motor de passo. Percebe-se, com facilidade, a ausência de alguns dados.

Figura 2.3 – Identificação do motor pelo sistema numérico do fabricante15.

14 Estes dados técnicos foram coletados (diretamente do site)/fornecidos (por e-mail), em 15/07/2008, do site:http://impexla.vilabol.uol.com.br/motores_de_passo.htm.15 (Minebea, 2002).

Modelo: 23LM-K005-25

23 L M K 0 05 25

Tipo de motorquanto ao

núcleo de ferro.

Tipo lâminado doestator:

K = 2 fases,Híbrido (baixo

ruído e vibração)

Variaçãoelétrica

Diâmetro do motorem décimos de

polegada.

Ângulo do passo:M = 1,8o / U = 3,75o

Y = 0,9o

Comprimento domotor em mm.

Variação de 0 a 8.

Característicascustomizadas.

Page 58: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

57

As Figuras 2.4 e 2.5 mostram o motor de passo aberto, as quais ilustram o estator

(bobinado), o rotor, os mancais a rolamentos e as tampas traseira e dianteira com seus

parafusos para fechamento.

Figura 2.4 – Detalhes do estator (à esquerda) e rotor (à direita) do motor de passo.

Figura 2.5 – Motor de passo aberto – todos os seus componentes.

O motor de passo utilizado é do tipo híbrido, o qual, construtivamente, é um

combinado entre o tipo relutância variável e o de imã permanente. Este hibridismo construtivo

dos dois tipos de motores desemboca num motor com maiores torques (todos os tipos de

torques – tratados no Capítulo 1) comparativamente com o motor só de imã permanente ou só

Page 59: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

58

de relutância variável. Uma figura bastante ilustrativa de um motor híbrido com rotor

chamado de “multidentado” e extraída da AN907/Microchip está mostrado na Figura 2.6.

Figura 2.6 – Lay-out do rotor e rotor-estator do motor de passo híbrido.

2.1.2.1 Driver e ligação das bobinas do motor de passo

Os motores de passo unipolar são constituídos de (a) duas bobinas no estator, cada

uma delas possuindo uma derivação central e (b) um rotor em imã permanente, ou híbrido.

Essas derivações centrais são, normalmente, ligadas ao pólo positivo da fonte de alimentação

(+12Vcc) (Figuras 2.7 e 2.8), enquanto que os demais terminais são chaveados por

transistores de potência com emissores aterrados (Figura 2.8). Este chaveamento segue um

código binário preestabelecido (conforme indicado na Figura 2.8, tabelas), o qual condiciona

o funcionamento do motor de passo, uma vez que seguindo esse código as bobinas produzem

um campo magnético girante (no sentido horário ou anti-horário) que arrasta consigo –

acoplamento magnético – o seu rotor magnetizado (imã permanente) no mesmo sentido do

referido campo girante.

Page 60: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

59

Figura 2.7 – Identificação das bobinas do motor de passo unipolar.

Figura 2.8 – Driver para o motor de passo unipolar.Jones (1995, p.2) e Nicolosi (2005, p.94)

Page 61: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

60

Deve-se observar que o conector CN1 (do driver) deverá ser ligado ao motor de

passo (conector CN3 do circuito do motor) e o conector CN2 (do driver) deverá ser ligado à

placa do microcontrolador (conector CN3 do circuito do microcontrolador). Deve-se observar

ainda que, para promover a rotação do motor no sentido horário, o sinal designado por

“direção” deve estar em nível lógico alto, e, em sentido anti-horário, obviamente, em nível

lógico baixo. A cada variação do clock, as saídas dos flip flops D mudam segundo as tabelas à

direita da Figura 2.8. Os transistores utilizados foram TIP122, os quais suportam uma corrente

máxima de coletor de 5A, portanto, atendem bem aos propósitos deste projeto.

Page 62: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

61

Capítulo 3. RESULTADOS E CONCLUSÃO.

3.1 A placa principal - contém o MCU

Em termos dos circuitos eletrônicos – hardware –, a Figura 3.1 ilustra como ficou

o projeto do circuito principal, que contém o microcontrolador PIC16F877A. É importante

perceber que este circuito é mais denso em recursos que o necessário no presente projeto, uma

vez que se pretende buscar a automação plena em futuros desenvolvimentos. Nessa figura,

conectar-se-á o display LCD no conector CN2, sendo que o byte chegará ao LCD após

transmissão serial e “paralelização” baseada no registrador de deslocamento 74164, como

pode ser visto abaixo. Em relação as ligações 74164-LCD pode-se vê-las com mais facilidade

na Figura 3.2.

Figura 3.1 – Circuito principal – contém o PIC16F877A.

Page 63: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

62

1kΩ 10kΩ

1kΩ

1kΩ

(1) (2) (3) (4)

Sendo: (1) ligado ao pino 24 do PIC (RC5) Ck do 74164; (2) ligado ao pino 7 do PIC (RA5) Dserie do 74164; (3) ligado ao pino 15 do PIC (RC0) ENABLE do LCD; (4) ligado ao pino 16 do PIC (RC1) RS do LCD.

Figura 3.2 – Ligação CI74164(Shift Register) e LCD ao MCU.

Page 64: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

63

3.2 Mecânica – o lay-out final

A Figura 3.3 mostra o lay-out final, com suas medidas, do projeto mecânico. No

topo pode-se observar o lugar (caixa) onde se alojou o motor de passo, o trafo, a placa da

fonte de alimentação e, ainda, a placa do driver do motor. Sobre essa caixa parafusou-se um

tampa de acrílico transparente em cuja superfície apoiou-se a placa principal do

microcontrolador, para facilidade de manuseio. Observa-se que o motor de passo está

conectado à haste rosqueada, a qual, na parte de baixo do desenho, está acoplada, via uma

porca de mesmo passo, à mesa móvel. Além disso, é importante lembrar que um imã

permanente foi embutido na parede inferior da mesa. Na parte fixa da estrutura e alinhado

com o referido ímã da mesa, embutiu-se um relé reed, o qual, quando acionado, indicará que a

mesa encontra-se na posição zero (inicial).

Figura 3.3 – Lay-out da estrutura mecânica.

Page 65: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

64

3.3 Softwares

3.3.1 Softwares de apoio

Para a produção deste projeto, no que diz respeito aos circuitos eletrônicos,

trabalhou-se com dois softwares16: (a) Livewire (trial version), para a produção dos desenhos

dos circuitos eletrônicos; (b) PCB Wizard 3 (trial version), para a produção das placas de

circuito impresso. Talvez seja devido ao fato de os softwares serem trial que os mesmos não

realizaram 100% do roteamento das trilhas, e isto gerou grande dispêndio de tempo no

desenvolvimento, dado que as trilhas não roteadas tiverem de ser implementadas à mão, ou

seja, trilha a trilha. Mas, uma vez que os lay-outs das placas foram produzidos, solicitou-se a

confecção das placas de circuito impressos (PCI), cujos lay-outs finais são mostrados nas

Figuras 3.4 a 3.9.

Figura 3.4 – PCI fonte alimentação - Lado da Solda (esquerda)

Figura 3.5 – PCI fonte alimentação - Lado dos componentes (direita)

Page 66: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

65

Figura 3.6 – PCI Driver do motor de passo – lado da solda.

Figura 3.7 – PCI Driver do motor de passo – lado dos componentes.

16 Site: www.new-wave-concepts.com

Page 67: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

66

Figura 3.8 – PCI Placa principal com o PIC16F877A – lado da solda.

Page 68: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

67

Figura 3.9 – PCI Placa principal com o PIC16F877A – lado dos componentes.

Ainda em termos dos softwares de apoio, utilizou-se os softwares (a) compilador MPLAB

(fornecido gratuitamente pelo fabricante do PIC, www.microchip.com) e (b) ICPROG (também

fornecido gratuitamente), software que controla o envio do programa executável (binário) para ser

gravado na memória do PIC, cujo download fora feito de: www.ic-prog.com, local onde se encontra,

também, vários modelos de circuitos gravadores do MCU, a exemplo do JDM PROGRAMMER.

Page 69: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

68

3.4 Visualização final do projeto

O que foi mostrado anteriormente deu suporte à construção da infra-estrutura a

que se buscou através deste projeto. Mostra-se, a seguir, como ficou o projeto final. A Figura

3.10 dá uma visão construtiva da mesa móvel e aproveitou-se para nela indicar as posições

físicas onde se fixou o imã permanente, o relé reed e o acoplamento porca-haste rosqueada.

Figura 3.10 – Detalhe construtivo da mesa móvel

Page 70: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

69

Na seqüência, as Figura 3.11 a 3.17 dão algumas visões do formato final do

projeto.

Figura 3.11 – Visão geral do projeto, sem acabamento, primeiro ângulo.

Figura 3.12 – Visão geral do projeto, sem acabamento, segundo ângulo.

Page 71: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

70

Figura 3.13 – Visão geral do projeto, sem acabamento, terceiro ângulo.

Figura 3.14 – Fonte de alimentação, placas driver motor de passo e do microcontrolador.

Page 72: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

71

Figura 3.15 – A Placa principal – contém o MCU.

Figura 3.16 – Visão geral do projeto, com acabamento.

Page 73: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

72

Figura 3.17 – Display LCD indicando o Afastamento rápido da Posição_0.

3.5 CONCLUSÃO

Este trabalho teve cunho estritamente eletrônico. Ele foi baseado no

microcontrolador PIC16F877A e na linguagem de programação assembly. Como esclareceu-

se noutros momentos, tratou-se de um trabalho intermediário cujo maior fito residirá na plena

automação da aquisição de dados providos de um eletrômetro, o qual medirá a carga elétrica

(que tem relação com a dose absorvida) detectada em uma câmara de ionização após a

interação da radiação (fonte radioativa emissora beta ) com o gás no interior desse detector.

Desenvolveu-se neste trabalho um sistema de posicionamento de uma fonte em

relação a um detector de radiação. O circuito eletrônico construído (hardware) é bastante

denso de recursos, e as rotinas em assembly apresentadas visam atender este primeiro

momento do trabalho (vide Anexos).

Um ponto para melhoria do projeto diz respeito à haste rosqueada. Como para

aproximar o deslocamento linear da mesa de 1mm necessitou dar 160 passos do motor, então,

o passo da rosca sem fim da haste utilizada foi de aproximadamente 1,25mm. Mas, de fato,

Page 74: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

73

quando o LCD indicava um deslocamento de 900mm, um ponteiro, indicador da posição

física em uma escala de aço fixa, apontava para 901mm, portanto, avançara em 1mm (erro de

0,11%). Acredita-se que o projeto pode ser melhorado caso solicite a produção de uma haste

“especializada”, ou projetada e construída só, e somente só, para este projeto. Se assim

acontecer, o melhor é optar pelo passo da rosca da haste de 1mm, fato que demandaria do

motor de passo uma volta completa para que a haste desloque a mesa por exatos 1mm.

Mesmo com o fato relevante supracitado, provou-se ser possível a aplicação deste

projeto nas medidas de dose absorvida por um eletrômetro. Desta maneira, acredita-se estar

no caminho certo para se conseguir a automação plena das referidas medidas.

Page 75: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

74

REFERÊNCIAS BIBLIOGRÁFICAS

AGENA, Fabricante, SPECIFICATION OF AA16202/AA16212 (LCDs), 1995, 13p.,

Disponível em: <http//www.agena.com.hk> . Acesso em 19 abr. 2008.

Ciarcia, Steve, Construa seu próprio Microcomputador Z80, 1a ed. Ed. McGraw-Hill do

Brasil Ltda, 1984, 331p.

FAIRCHILD, Fabricante, Datasheet 7474 (dual FFD) Disponível em:

<http//www.alldatasheet.com>. Acesso em 07 dez. 2007.

FAIRCHILD, Fabricante, Datasheet 7486 (4-EXOR) Disponível em:

<http//www.alldatasheet.com>. Acesso em 07 dez. 2007.

FAIRCHILD, Fabricante, Datasheet 74164 (Shift Register), 2000, 5p. Disponível em:

<http//www.alldatasheet.com>. Acesso em 07 dez. 2007.

GOMES, Eng. Alcides Tadeu, Telecomunicações, Transmissão Recepção – AM-FM

Sistemas Pulsados. 3a ed. Ed. Érica Ltda, 1985, 457p.

JONES, Douglas W. – Tutorial sobre: Stepping Motors, 1995, Disponível em:

<http//www.cs.uiowa.edu/~jones/step/> . Acesso em 16 jul. 2008.

KNOLL, G. F., Radiation Detection and Measurement. 2th ed. New York, John Wiley &

Sons. p. 754, 1989.

Maldonado, Paulo César, Z80 – Aplicações, 1a ed. Ed. Érica Ltda, 1990, 187p.

Malvino, Albert Paul, Microcomputadores e Microprocessadores, 2a ed. Ed. McGraw-Hill

do Brasil, 1985, 578p.

Page 76: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

75

MELO, Mairtom, Eletrônica Digital, 1a ed. Ed. McGraw-Hill do Brasil, 1993, 414p.

MICROCHIP, Fabricante, AN907 – Stepping Motors Fundamentals, 2004, 22p., Disponível

em: <http//www.microchip.com> . Acesso em 19 abr. 2008.

MICROCHIP, Fabricante, Datasheet PIC16F877A, 2003, 232p., Disponível em:

<http//www.microchip.com> . Acesso em 19 abr. 2008.

MICROCHIP, Fabricante, Datasheet PIC16F84A, 1998, 68p., Disponível em:

<http//www.microchip.com> . Acesso em 19 abr. 2008.

MINEBEA CO., LTD, Fabricante motor de passo, Glossary, e Catalog, 2002, Disponível em:

<http://www.eminebea.com>. Acesso em 15 jul. 2008.

NICOLOSI, Denys E. C., Laboratório de Microcontroladores Família 8051 – Treino de

Instruções, Hardware e Software, 4a ed, Ed. Érica Ltda, 2005, 206p.

Nussenzveig, H. Moysés, Curso de Física Básica 1 – Mecânica, 4a ed. Revisada, Ed. Edgard

Blucher LTDA, 2002, 328p.

Oliveira, Ney Acyr R. e outro, Microprocessador Z-80, Hardware, 1a ed. Editado pela A e

N – Consultoria Projetos e Publicações Ltda, 1983, 199p.

Oliveira, Ney Acyr R. e outro, Programando Z-80, Linguagem Assembly, 1a ed. Editado

por Ciência Moderna Computação Ltda, 1986, 262p.

Pereira, Fábio, Microcontroladores PIC: Programação em C, 4a ed, Ed. Érica Ltda, 2003,

358p.

Page 77: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

76

Souza, David José de, e outro, PIC16F877A – Conectando o PIC, Recursos Avançados, 3a

ed, Ed. Érica Ltda, 2006, 379p.

Souza, David José de, Desbravando o PIC – Ampliado e Atualizado para PIC16F628A, 9a

ed, Ed. Érica Ltda, 2005, 267p.

Tanenbaun, Andrew S., Organização Estruturada de Computadores, 4a ed. Ed. LTC, 2001,

398p.

Taub, Herbert, Circuitos Digitais e Microprocessadores, 1a ed. Ed. McGraw-Hill do Brasil

Ltda, 1984, 510p.

Tocci, Ronald J. e outro, Sistemas Digitais Princípios e Aplicações, 8a ed. Ed. Prentice Hall,

2003, 755p.

Zanco, Wagner da Silva, Microcontroladores PIC16F628A e 648A – Uma abordagem

prática e objetiva – Recursos básicos e avançados, 1a ed., Ed. Érica Ltda, 2005, 364p.

Zanco, Wagner da Silva, Microcontroladores PIC – Técnicas de software e Hardware

para projetos de Circuitos Eletrônicos – com base no PIC16F877A, 1a ed., Ed. Érica Ltda,

2006, 390p.

Page 78: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

77

ANEXOS

A1 – Softwares – programas em assembly

a) Programa Principal

A Figura A1 mostra o início do fluxograma do programa principal. Basicamente

inicia-se um programa configurando e definindo as variáveis e constantes a serem utilizadas.

Figura A1 – Programa Principal – Início.

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Programa Assembly para o PIC16F877A *; * A CAMINHO da Automação das medidas realizadas em um *; * eletrômetro *; * *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * VERSÃO : 1.0 *; * DATA : 10/01/2008 *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * DESCRIÇÃO GERAL *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Objetiva-se com este programa em assembly a direcioná-lo para a automação das medidas das cargas; elétricas detectadas por uma câmara de ionização e medidas por um eletrômetro em cuja interface; digital será lido este valor medido e armazenado em uma memória serial (24LC256 de 32kBytes).; Como unidade de saída de informação será usado um display de cristal líquido (LCD de 2 linhas e 16

Page 79: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

78

; colunas).;; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * CONFIGURAÇÕES PARA GRAVAÇÃO ( 1 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_OFF & _BODEN_OFF &_PWRTE_ON & _WDT_ON & _XT_OSC

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * DEFINIÇÃO DAS VARIÁVEIS ( 2 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

CBLOCK 0X20 ; POSIÇÃO INICIAL DA RAMUNIDADE ; unidade, em milímetros, do movimento da mesa.DEZENA ; dezena, em milímetros, do movimento da mesa.CENTENA ; centena, em milímetros, do movimento da mesa.FILTRO_BOTOES ; Filtro para ruídosTEMPO_TURBO ; Temporizador p/ turbo das teclas

TEMPO1TEMPO0 ; Contadores p/ delay

FLAG ; FLAG de uso geral

AUX ; Registrador auxiliar de uso geral

ENDERECO_TEMP ; Lugar p/ guardar temporariamente um nibble endereçoVOLTA ; Variável p/ a quantidade de pulsos de uma volta do Motor passo.

VALOR ; Para ser TX serie-paraleloDesloca ; registra quantos bits foram deslocados.WTEMP ; GUARDAR W TEMPORARIAMENTEWTEMP1 ; Guarda temporariamente W

L1_C0 ;Byte ASCII a ser plotado na Linha1_Coluna0 do LCDL1_C1 ;Byte ASCII a ser plotado na Linha1_Coluna1 do LCDL1_C2 ;Byte ASCII a ser plotado na Linha1_Coluna2 do LCDL1_C3 ;Byte ASCII a ser plotado na Linha1_Coluna3 do LCDL1_C4 ;Byte ASCII a ser plotado na Linha1_Coluna4 do LCDL1_C5 ;Byte ASCII a ser plotado na Linha1_Coluna5 do LCDL1_C6 ;Byte ASCII a ser plotado na Linha1_Coluna6 do LCDL1_C7 ;Byte ASCII a ser plotado na Linha1_Coluna7 do LCDL1_C8 ;Byte ASCII a ser plotado na Linha1_Coluna8 do LCDL1_C9 ;Byte ASCII a ser plotado na Linha1_Coluna9 do LCDL1_C10 ;Byte ASCII a ser plotado na Linha1_Coluna10 do LCDL1_C11 ;Byte ASCII a ser plotado na Linha1_Coluna11 do LCDL1_C12 ;Byte ASCII a ser plotado na Linha1_Coluna12 do LCDL1_C13 ;Byte ASCII a ser plotado na Linha1_Coluna13 do LCDL1_C14 ;Byte ASCII a ser plotado na Linha1_Coluna14 do LCDL1_C15 ;Byte ASCII a ser plotado na Linha1_Coluna15 do LCD

L2_C0 ;Byte ASCII a ser plotado na Linha2_Coluna0 do LCDL2_C1 ;Byte ASCII a ser plotado na Linha2_Coluna1 do LCDL2_C2 ;Byte ASCII a ser plotado na Linha2_Coluna2 do LCDL2_C3 ;Byte ASCII a ser plotado na Linha2_Coluna3 do LCDL2_C4 ;Byte ASCII a ser plotado na Linha2_Coluna4 do LCDL2_C5 ;Byte ASCII a ser plotado na Linha2_Coluna5 do LCDL2_C6 ;Byte ASCII a ser plotado na Linha2_Coluna6 do LCD

Page 80: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

79

L2_C7 ;Byte ASCII a ser plotado na Linha2_Coluna7 do LCDL2_C8 ;Byte ASCII a ser plotado na Linha2_Coluna8 do LCDL2_C9 ;Byte ASCII a ser plotado na Linha2_Coluna9 do LCDL2_C10 ;Byte ASCII a ser plotado na Linha2_Coluna10 do LCDL2_C11 ;Byte ASCII a ser plotado na Linha2_Coluna11 do LCDL2_C12 ;Byte ASCII a ser plotado na Linha2_Coluna12 do LCDL2_C13 ;Byte ASCII a ser plotado na Linha2_Coluna13 do LCDL2_C14 ;Byte ASCII a ser plotado na Linha2_Coluna14 do LCDL2_C15 ;Byte ASCII a ser plotado na Linha2_Coluna15 do LCD

ENDC

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * DEFINIÇÃO DAS VARIÁVEIS INTERNAS DO PIC ( 3 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

#INCLUDE <P16F877A.INC> ; MICROCONTROLADOR UTILIZADO

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * DEFINIÇÃO DOS BANCOS DE RAM ( 4 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

#DEFINE BANK1 BSF STATUS,RP0 ; SELECIONA BANK1 DA MEMORIA RAM#DEFINE BANK0 BCF STATUS,RP0 ; SELECIONA BANK0 DA MEMORIA RAM

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * CONSTANTES INTERNAS ( 4 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

FILTRO_TECLA EQU .200 ; FILTRO P/ EVITAR RUIDOS DOS BOTÕES

TURBO_TECLA EQU .60 ; TEMPORIZADOR P/ TURBO DAS TECLAS ; (Souza, 2006)

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * ENTRADAS ( 4 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; Definição das chaves

#DEFINE INC_Memo PORTA,0 ; ESTADO das chaves (PUSH Botton)#DEFINE Dec_Memo PORTA,1 ; 1 LIBERADO#DEFINE Inic_Grav PORTA,2 ; 0 PRESSIONADO#DEFINE Fim_Grav PORTA,3#DEFINE Exp_Futura PORTA,4

; Definição da posicao_0 da mesa móvel.

#DEFINE Posicao_0 PORTE,0 ; Quando em nível alto (1) está na posição 0.

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * SAÍDAS ( 4 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; Definições para controle do LCD#DEFINE ENABLE PORTC,0 ; SINAL DE ENABLE P/ DISPLAY

; ATIVO NA BORDA DE DESCIDA#DEFINE RS PORTC,1 ; INDICA P/ O DISPLAY UM DADO OU COMANDO

; 1 DADO

Page 81: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

80

; 0 COMANDO

#DEFINE Ck PORTC,5 ; Clock do CI 74LS164, transfere na subida.

#DEFINE Dserie PORTA,5 ; Dados para ser enviado ao display (74LS164).

; Definições para controle do motor de passo#DEFINE Clock_passo PORTE,1 ; A cada variação 0 1 0 dá um passo

#DEFINE Direcao PORTE,2 ; Dependendo do nível lógico o motor de passo; girará no sentido horário ou anti-horário.; 1 Horário; 0 Anti-horário.

Na seqüência, o programa principal é desviado para a rotina CONFIG, onde são

configurados os registradores internos e segue para verificação de alguma chave apertada, e,

caso tenha sido, promove o desvio para seu tratamento, como mostra a Figura A2.

Figura A2 – Programa Principal – Configurações e definições e detecção chaveapertada. (Souza, 2006)

Page 82: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

81

Esta parte do programa é retratada na seqüência.

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Configurações, definição do perfil de trabalho ( 5 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;; Esta rotina configura, ou atribui valores, os diversos registradores do MCU conforme a necessidade do; projeto em voga.

CONFIGCLRF PORTA ; Fazem as saídas assumir nível lógico baixoCLRF PORTB ; isto é, ZERO (0).CLRF PORTCCLRF PORTDCLRF PORTE

BANK1 ; Seleciona BANCO 1 da RAM.

MOVLW B'11011111' ; Configuração da PORTA (I/O)MOVWF TRISA ; Bits nd nd RA5 RA4 RA3 RA2 RA1 RA0

; bits 7 e 6 irrelevantes; RA5=0=Dserie Output, dado serial para o 74164 do LCD; RA4=1=Exp_Futura Input, chave para Expansão Futura; RA3=1=Fim_Grav Input, chave para Fim da gravação; RA2=1=Inic_Grav Input, chave para Iniciar a gravação;RA1=1=Dec_Memo Input, chave p/ decrementar end. memória;RA0=1=INC_Memo Input, chave p/ incrementar end. memória

MOVLW B'11111111' ; Configuração da PORTB (I/O)MOVWF TRISB ; Bits -> RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

; Todos os bits configurados para entrada de dados uso futuro

MOVLW B'10010000' ; Configuração da PORTC (I/O)MOVWF TRISC ; Bits -> RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0

; RC7=1 uso futuro; RC6=0 uso futuro; RC5=0=Ck, Output do clock para o CI 74LS164.; RC4=1 uso futuro.; RC3=0 uso futuro.; RC2=1 uso futuro.; RC1=0=RS, Output para dados ou comando para o LCD; RC0=0=ENABLE, Output para habilitar o LCD

MOVLW B'00000001' ; Configuração da PORTE (I/O)MOVWF TRISE ; Bits -> nd nd nd nd nd RE2 RE1 RE0

; bits de 7 a 3 são irrelevantes; RE2=0=Direcao, Output, define o sentido rotação motor passo.; RE1=0=Clock_passo, Output, dá a cadência p/ cada passo; RE0=1=Posicao_0, Input, quando em nível alto(1) = posicão_0

MOVLW B'11011111'MOVWF OPTION_REG ; Definindo o registrador OPTION_REG

; do Bit7 (/RBPU) ao Bit0 (PS0);(7) /RBPU =1 Pull ups internos da PORTB desabilitados.;(6)INTEDG=1 Interrupção externa RB0 ocorrerá borda subida.;(5)T0CS=0 TMR0 incrementado pelo ciclo máquina interno.;(4)T0SE =0 irrelevante, pois T0CS=0.;(3)PSA =1 o prescaler será aplicado ao WDT; PS2 PS1 PS0 Qdo TMR0(PSA=0) Qdo WDT(PSA=1)

Page 83: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

82

; 0 0 0 1:2 1:1; 0 0 1 1:4 1:2

; 0 1 0 1:8 1:4 ; 0 1 1 1:16 1:8

; 1 0 0 1:32 1:16; 1 0 1 1:64 1:32; 1 1 0 1:128 1:64; 1 1 1 1:256 1:128;; portanto, WDT - 1:128

MOVLW B'00000000' ; INTCON = Configuração das InterrupçõesMOVWF INTCON ; Bits -> GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

; _/ __/_ --------------------; |______/ _ Identificam int; |___________/ _ TMR0 RB0 Mudança; |______________/ _ RB4 a RB7;; INTCON = 00h -> Desabilitada todas as interrupções.

MOVLW B'00000111' ; ADCOM1 = Configura pinos como analógicos ou digitaisMOVWF ADCON1 ; Bits ADFM nd nd nd PCFG3 PCFG2 PCFG1 PCFG0

; (7) ADFM=0 o resultado da conversão A/D de 10 bits será; justificado à esquerda. Os 6 bits menos sig.; de ADRESL são lidos como nível lógico baixo(0).; [Irrelevante, pois PCFG(3:0) configura portas para DIGITAL]; (6, 5, 4) os três próximos zeros (000) não têm significado.;

; PCFG3: AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 V V Canais Ref. ; PCFG0 RE2 RE1 RE0 RA5 RA3 RA2 RA1 RA0 ref+ ref- Analog. Ext. ; -------------------------------------------------------------------------------------------- ; 0111 D D D D D D D D Vdd Vss 0 0 ; --------------------------------------------------------------------------------------------

; onde: A= Analógico e D=Digital o respectivo pino do PIC.;; Configurou a PORTA E PORTE como I/O DIGITAL.

BANK0

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Inicialização da memória RAM ( 6 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Zera o conteúdo da RAM do endereço 0X20 A 0X7F.

MOVLW 0X20MOVWF FSR ; O registrador FSR deve conter o endereço no qual será gravado

; o valor que estiver presente no registrador INDF. Então, objeti-; vamente: inicia FSR com 20h, o qual é o primeiro endereço da; RAM onde definiu-se, neste programa, o registrador de nome:; UNIDADE, e, como último endereço, 7Fh destinado à imple-.; mentação de todas as variáveis do usuário.

LIMPA_RAMCLRF INDF ; Zera o conteúdo de INDF, ou: INDF 00h, que é o conteúdo

; (dado) a que é carregado no registrador endereçado (apontado); residente, neste momento, no registrador FSR, iniciado com o; valor 20h.

INCF FSR,F ; Incrementa o apontador FSR para o próximo endereço (regis-; trador), ou FSR FSR + 1, isto é: a 1a vez ficará:; FSR 20h+01h = 21h

Page 84: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

83

MOVF FSR,W ; W FSRXORLW 0X80 ; W W XOR 80h na 1a vez fica: W = 21h = 0010 0001

; 80h = 1000 0000; W XOR = 1010 0001; XOR afeta o flag Z que neste caso não resultou em zero; portanto o flag z=0.; Quando o último endereço (7Fh) for somado 1 ficará: 80h; então: W = 80h = 1000 000; 80h = 1000 0000; W XOR = 0000 0000; XOR afeta o flag Z que neste caso resultou em zero,; portanto o flag z=1.

BTFSS STATUS,Z ; Testa o bit Z do STATUS e salta a próxima instrução caso; o bit Z seja 1 (ou o resultado da operação anterior tenha; dado zero. Caso contrário, execute a próxima instrução, ou; seja, execute a instrução GOTO LIMPA_RAM - ou feche o loop; ou reinicie o processo de clear os registradores da RAM.; Já limpou todos os endereços da RAM?

GOTO LIMPA_RAM ; NÃO - retorne ao início para zerar a próxima posição da RAM; SIM - dê seqüência à execução do programa.

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Inicialização do LCD ( 7 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Esta rotina inicializa o LCD p/ comunicação por 8 trilhas. Em um LCD de 2 linhas e 16 colunas, o cursor; deverá estar apagado e o deslocamento do cursor se fará para a direita.

MOVLW 0X08MOVWF Desloca ; Quanto deslocará à direita o byte a ser enviado ao LCD.

INICIAR_DISPBCF RS ; Seleciona o display p/ comandos

MOVLW .33CALL DELAY_MS ; Delay de 33ms

MOVLW 0x38 ; Escreve comando 0X38 para inicialização?CALL ESCREVE ; eqüivale ao function set, ou modo de trabalho.

MOVLW 0x0C ; Escreve comando 0X0C para inicialização?CALL ESCREVE ; eqüivale ao código de Display on/off control

MOVLW 0x01 ; Escreve o comando para limpar todo o display.CALL ESCREVE

MOVLW .2CALL DELAY_MS ; Delay de 2ms

MOVLW 0x06 ; Escreve comando para incremento, com shift displayCALL ESCREVE ; desligado.

BSF RS ; Seleciona o display para dados.; fim da inicialização.

Mens_inicialCALL Mens_1 ; Escreve no LCD:

; Gravar=Inic_Grav; Ler=INC_Memo e Dec_Memo (Motor de passo rápido)

Page 85: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

84

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Varredura dos botões (chaves) ( 8 ) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Verificação de chaves apertadas com devido encaminhamento para execução da função desejada.

; *********************** Verifica se alguma chave foi apertada *******************************

VARRE ; (Souza, 2006)

VARRE_CHAVES

BTFSS INC_Memo ; PORTA,0 A chave está pressionada?GOTO TRATA_CHAVE_0 ; SIM (nível 0) - executa GOTO

; NÃO (nível 1) - não executa GOTOBTFSS Dec_Memo ; PORTA,1 A chave está pressionada?GOTO TRATA_CHAVE_1 ; SIM (nível 0) - executa GOTO

; NÃO (nível 1) - não executa GOTO

BTFSS Inic_Grav ; PORTA,2 A chave está pressionada?GOTO TRATA_CHAVE_2 ; SIM (nível 0) - executa GOTO

; NÃO (nível 1) - não executa GOTO

BTFSS Fim_Grav ; PORTA,3 A chave está pressionada?GOTO TRATA_CHAVE_3 ; SIM (nível 0) - executa GOTO

; NÃO (nível 1) - não executa GOTO

;BTFSS Exp_Futura ; PORTA,4 A chave está pressionada?;GOTO TRATA_CHAVE_4 ; SIM (nível 0) - executa GOTO

; NÃO (nível 1) - não executa GOTO

; ** Carrega valores para DEBOUNCE (instabilidade) que evita ruídos ao ligar uma chave **

MOVLW FILTRO_TECLA ; CARREGA O VALOR DE FILTRO_TECLAMOVWF FILTRO_BOTOES ; SALVA EM FILTRO_BOTOES

; RECARREGA FILTRO P/ EVITAR RUIDOS; NOS BOTÕES, (Souza, 2006).

MOVLW .1MOVWF TEMPO_TURBO ; CARREGA TEMPO DO TURBO DAS TECLAS

; COM 1 - IGNORA O TURBO A PRIMEIRA; VEZ QUE A TECLA É PRESSIONADA

GOTO VARRE ; VOLTA PARA VARRER TECLADO

Uma vez que tenha sido apertada uma das teclas, o processamento será deslocado

para o tratamento da que foi apertada, como ilustra a Figura A3. E, na seqüência, chama a

rotina principal: MM_900.

Page 86: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

85

Figura A3 – Programa Principal – Final. Tratamento de uma tecla pressionada echamada da rotina principal.

; ******************************* Tratamento da chave_1 ***********************************

TRATA_CHAVE_1 ; Apertou a chave Dec_MemoDECFSZ FILTRO_BOTOES,F ; Fim do ruído da chave?GOTO VARRE ; NÃO - VOLTA P/ VARRE

; SIM - BOTÃO PRESSIONADODECFSZ TEMPO_TURBO,F ; FIM DO TEMPO DE TURBO ?GOTO VARRE ; NÃO - VOLTA P/ VARRE

; SIMCALL Mens_4CALL MM_900GOTO Mens_inicial ; VOLTA P/ VARREDURA DOS BOTÕES

Page 87: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

86

b) Sub-rotinas de apoio ao programa principal

b1) Rotina principal

O propósito desta rotina é promover o deslocamento milímetro-a-milímetro (ou o

mais próximo do milímetro, mas a passos constantes) da mesa móvel da posição zero até

900mm. Esta rotina foi a forma encontrada para mostrar as diversas sub-rotinas produzidas e

que, a posteriori, suportarão a automação final do equipamento ora perseguido. O nome dado

a esta rotina foi MM_900. O seu fluxograma está mostrado na Figura A4.

Figura A4 – Rotina Principal – Exemplo para uso das demais rotinas produzidas.

Page 88: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

87

Esta rotina ficou da seguinte forma:

; ************************************************************************************; Rotina de controle mm a mm da posição da mesa indicando-a no LCD *; ************************************************************************************

MM_900 ; promove 990 mm de deslocamento da mesaMOVLW 0x00MOVWF UNIDADE ; inicializa UNIDADE com 00h.MOVLW 0x00MOVWF DEZENA ; inicializa DEZENA com 00h.MOVLW 0x00MOVWF CENTENA ; inicializa CENTENA com 00h.

OUTRO_MMMOVF UNIDADE,W ; W UNIDADECALL HEXA_ASCIIMOVWF L2_C3MOVF DEZENA,W ; W DEZENACALL HEXA_ASCIIMOVWF L2_C2MOVF CENTENA,W ; W CENTENACALL HEXA_ASCIIMOVWF L2_C1CALL Mens_5CALL DELAY_MSCALL UM_MMINCF UNIDADE,F ; UNIDADE UNIDADE + 1MOVF UNIDADE,W ; W UNIDADESUBLW 0x0A ; W 0A - WBTFSS STATUS,ZGOTO OUTRO_MMMOVLW 0x00MOVWF UNIDADEINCF DEZENA,F ; DEZENA DEZENA + 1MOVF DEZENA,W ; W DEZENASUBLW 0x0A ; W 0A - WBTFSS STATUS,ZGOTO OUTRO_MMMOVLW 0x00MOVWF DEZENAINCF CENTENA,F ; CENTENA CENTENA + 1MOVF CENTENA,W ; W CENTENASUBLW 0x09 ; W 0A - WBTFSS STATUS,ZGOTO OUTRO_MM

RETURN

Page 89: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

88

b2) Rotinas de apoio

1) Rotina para controle da escrita no LCD

Figura A5 – Rotina para escrever no LCD.

Page 90: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

89

Em linguagem assembly esta rotina ficou:

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Rotina de escrita de um caracter no display LCD *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Esta rotina envia um caracter para o módulo LCD. O caracter a ser escrito deve ser colocado em; WORK (W) antes de chamar esta rotina.

ESCREVEMOVWF WTEMP ; WTEMP W

WriteBTFSC WTEMP,0 ; Testa o bit 0 do w e salta próxima instrução se zeroGOTO UMBCf DserieGOTO CONTINUA

UMBSf Dserie

CONTINUABSF Ck ; clock para deslocar um bitBCF CkRRF WTEMP,F ; Deslocar um bit à direita.CLRWDT ; ZERA o registrador WATCHDOG TIMERDECFSZ Desloca,F ; Desloca Desloca –1 ( inicialmente era 08H )GOTO WriteBCF Dserie

MOVLW 0X08MOVWF Desloca ; É o quanto se deslocará à direita o byte.

BSF ENABLE ; Envia um pulso de Enable ao displayGOTO $+1

BCF ENABLE ; o aceite da informação é na descida ENABLE

RETURN ; Retorna

2) Rotinas de mensagens para o LCD

Mostrou-se, na seqüência, as mensagens mais significativas usadas até agora.

Portanto, quando houver numeração de mensagem saltada é porque a mesma não está contida

nas rotinas tratadas e tiveram originalmente esta numeração. Então, tratou-se das mensagens:

MENS_1; MENS_4 e MENS_5, concluindo que as MENS_2 e 3 estão contidas somente no

projeto original e não são importantes para o corpo desta dissertação.

Page 91: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

90

Figura A6 – Mensagens no LCD.

Page 92: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

91

Estas rotinas ficaram da seguinte forma:

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Rotina para a Mensagem 1 no LCD *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Mens_1; Gravar=Inic_Grav

MOVLW 'G'MOVWF L1_C0MOVLW 'r'MOVWF L1_C1MOVLW 'a'MOVWF L1_C2MOVLW 'v'MOVWF L1_C3MOVLW 'a'MOVWF L1_C4MOVLW 'r'MOVWF L1_C5MOVLW '='MOVWF L1_C6MOVLW 'I'MOVWF L1_C7MOVLW 'n'MOVWF L1_C8MOVLW 'i'MOVWF L1_C9MOVLW 'c'MOVWF L1_C10MOVLW '_'MOVWF L1_C11MOVLW 'G'MOVWF L1_C12MOVLW 'r'MOVWF L1_C13MOVLW 'a'MOVWF L1_C14MOVLW 'v'MOVWF L1_C15

; Ler=INC_MemoMOVLW 'L'MOVWF L2_C0MOVLW 'e'MOVWF L2_C1MOVLW 'r'MOVWF L2_C2MOVLW '='MOVWF L2_C3MOVLW 'I'MOVWF L2_C4MOVLW 'N'MOVWF L2_C5MOVLW 'C'MOVWF L2_C6MOVLW '_'MOVWF L2_C7MOVLW 'M'

Page 93: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

92

MOVWF L2_C8MOVLW 'e'MOVWF L2_C9MOVLW 'm'MOVWF L2_C10MOVLW '0'MOVWF L2_C11MOVLW ' 'MOVWF L2_C12MOVLW ' 'MOVWF L2_C13MOVLW ' 'MOVWF L2_C14MOVLW ' 'MOVWF L2_C15

CALL LCD_LINHA_1CALL LCD_LINHA_2

RETURN

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Rotina para a Mensagem 4 no LCD *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Mens_4 ; Afastando rápido; da Posicao_0.

MOVLW 'A'MOVWF L1_C0MOVLW 'f'MOVWF L1_C1MOVLW 'a'MOVWF L1_C2MOVLW 's'MOVWF L1_C3MOVLW 't'MOVWF L1_C4MOVLW 'a'MOVWF L1_C5MOVLW 'n'MOVWF L1_C6MOVLW 'd'MOVWF L1_C7MOVLW 'o'MOVWF L1_C8MOVLW ' 'MOVWF L1_C9MOVLW 'r'MOVWF L1_C10MOVLW 'a'MOVWF L1_C11MOVLW 'p'MOVWF L1_C12MOVLW 'i'MOVWF L1_C13MOVLW 'd'

Page 94: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

93

MOVWF L1_C14MOVLW 'o'MOVWF L1_C15

; Afastando rápido; da Posicao_0.

MOVLW 'd'MOVWF L2_C0MOVLW 'a'MOVWF L2_C1MOVLW ' 'MOVWF L2_C2MOVLW 'P'MOVWF L2_C3MOVLW 'o'MOVWF L2_C4MOVLW 's'MOVWF L2_C5MOVLW 'i'MOVWF L2_C6MOVLW 'c'MOVWF L2_C7MOVLW 'a'MOVWF L2_C8MOVLW 'o'MOVWF L2_C9MOVLW '_'MOVWF L2_C10MOVLW '0'MOVWF L2_C11MOVLW '.'MOVWF L2_C12MOVLW ' 'MOVWF L2_C13MOVLW ' 'MOVWF L2_C14MOVLW ' 'MOVWF L2_C15

CALL LCD_LINHA_1CALL LCD_LINHA_2

RETURN

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Rotina para a Mensagem 5 no LCD *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Mens_5 ; d(mm) Med(E-13)C; ____ 0,xxyy

MOVLW 'd'MOVWF L1_C0MOVLW '('MOVWF L1_C1MOVLW 'm'MOVWF L1_C2MOVLW 'm'MOVWF L1_C3MOVLW ')'

Page 95: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

94

MOVWF L1_C4MOVLW ' 'MOVWF L1_C5MOVLW 'M'MOVWF L1_C6MOVLW 'e'MOVWF L1_C7MOVLW 'd'MOVWF L1_C8MOVLW '('MOVWF L1_C9MOVLW 'E'MOVWF L1_C10MOVLW '-'MOVWF L1_C11MOVLW '1'MOVWF L1_C12MOVLW '3'MOVWF L1_C13MOVLW ')'MOVWF L1_C14MOVLW 'C'MOVWF L1_C15

; d(mm) Med(E-13)C; ____ 0,xxyy

MOVLW ' 'MOVWF L2_C0MOVLW ' 'MOVWF L2_C4MOVLW ' 'MOVWF L2_C5MOVLW ' 'MOVWF L2_C6MOVLW ' 'MOVWF L2_C7MOVLW '0'MOVWF L2_C8MOVLW ','MOVWF L2_C9MOVLW 'x'MOVWF L2_C10MOVLW 'x'MOVWF L2_C11MOVLW 'y'MOVWF L2_C12MOVLW 'y'MOVWF L2_C13MOVLW ' 'MOVWF L2_C14MOVLW ' 'MOVWF L2_C15

CALL LCD_LINHA_1CALL LCD_LINHA_2

RETURN

Page 96: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

95

3) Rotinas auxiliares às rotinas de mensagens.

Figura A7 – Rotinas de apoio às de Mensagens.

Estas rotinas, em linguagem assembly, ficaram da seguinte forma:

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Rotina para se escrever na linha 1 do LCD *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Esta rotina escreve na linha 1 do LCD o seguinte: "END.(HEXA) DADO"

LCD_LINHA_1BCF RS ; Seleciona o display LCD p/ comandos.MOVLW 0X80 ; Comando para posicionar o cursorCALL ESCREVE ; Linha 1 / Coluna 0

BSF RS ; Seleciona o display p/ dados

; Comandos para escrever o texto desejado; na linha 1 do display LCD.

MOVF L1_C0,W ; W L1_C0

Page 97: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

96

CALL ESCREVEMOVF L1_C1,W ; W L1_C1CALL ESCREVEMOVF L1_C2,W ; W L1_C2CALL ESCREVEMOVF L1_C3,W ; W L1_C3CALL ESCREVEMOVF L1_C4,W ; W L1_C4CALL L1_C6,W ; W L1_C6CALL ESCREVEMOVF L1_C7,W ; W L1_C7CALL ESCREVEMOVF L1_C8,W ; W L1_C8CALL ESCREVEMOVF L1_C9,W ; W L1_C9CALL ESCREVEMOVF L1_C10,W ; W L1_C10CALL ESCREVEMOVF L1_C11,W ; W L1_C11CALL ESCREVEMOVF L1_C12,W ; W L1_C12CALL ESCREVEMOVF L1_C13,W ; W L1_C13CALL ESCREVEMOVF L1_C14,W ; W L1_C14CALL ESCREVEMOVF L1_C15,W ; W L1_C15CALL ESCREVE

RETURN ; RETORNA

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Rotina para se escrever na linha 2 do LCD *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Esta rotina escreve na linha 2 do LCD o seguinte: "END.(HEXA) DADO"

LCD_LINHA_2BCF RS ; Seleciona o display p/ comandoMOVLW 0XC0 ; Comando para posicionar o cursorCALL ESCREVE ; LINHA 2 / COLUNA 0.

BSF RS ; Seleciona o display p/ dados

; Comandos para escrever o texto desejado; na linha 2 do display LCD.

MOVF L2_C0,W ; W L2_C0CALL ESCREVEMOVF L2_C1,W ; W L2_C1CALL ESCREVEMOVF L2_C2,W ; W L2_C2CALL ESCREVEMOVF L2_C3,W ; W L2_C3CALL ESCREVEMOVF L2_C4,W ; W L2_C4CALL ESCREVEMOVF L2_C5,W ; W L2_C5CALL ESCREVE

Page 98: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

97

MOVF L2_C6,W ; W L2_C6CALL ESCREVEMOVF L2_C7,W ; W L2_C7CALL ESCREVEMOVF L2_C8,W ; W L2_C8CALL ESCREVEMOVF L2_C9,W ; W L2_C9CALL ESCREVEMOVF L2_C10,W ; W L2_C10CALL ESCREVEMOVF L2_C11,W ; W L2_C11CALL ESCREVEMOVF L2_C12,W ; W L2_C12CALL ESCREVEMOVF L2_C13,W ; W L2_C13CALL ESCREVEMOVF L2_C14,W ; W L2_C14CALL ESCREVEMOVF L2_C15,W ; W L2_C15CALL ESCREVE

RETURN ; RETORNA

4) Rotina de controle da rotação do motor de passo

Quando em processamento, esta rotina realiza o controle do motor de passo para

que ele desloque a mesa móvel em 1mm aproximadamente, como mostrado pelo programa

assembly abaixo e seu fluxograma na Figura A8 logo na seqüência.

; **************************************************************************************; * Rotina para o motor de passo mover a mesa 1 mm no sentido anti-horário, distanciando da posicão_0 *; **************************************************************************************

UM_MMBCF Direcao ; Reseta Direção para girar sentido anti-horário o MP.MOVLW .160 ; carrega número de passos necessários mover mesa 1 mm.MOVWF VOLTA

NOVO_PASSOBSF Clock_passo ;(1 Tcy) seta bit 1 PORTE, inicia um pulso de clock para um passo.MOVLW .3 ; (1 Tcy)CALL DELAY_MOTOR ; (2 Tcy) DELAY Motor para clock setadoBCF Clock_passo ; (1 Tcy)MOVLW .2 ; (1 Tcy)CALL DELAY_MOTOR ; (2 Tcy0 DELAY Motor para clock resetadoDECFSZ VOLTA,F ;(1ou2 TCy)VOLTA VOLTA-1, qdo zero salta próxima instrução.GOTO NOVO_PASSORETURN

Page 99: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

98

Figura A8 – Rotina controle 1mm deslocamento da mesa móvel.

5) As demais rotinas

Estas rotinas, apesar de serem retratadas por último, são também importantes.

Trata-se das rotinas:

♦ HEXA_ASCII: converte hexadecimal para o código ASCII;

Page 100: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

99

♦ TROCA_NIBBLE: inverte a posição do nibble menos significativo com o

mais significativo;

♦ DELAY_MOTOR: rotina de atraso para o motor de passo;

♦ DELAY_MS: rotina de atraso de 1ms;

Figura A9 – Rotina para conversão hexadecimal em ASCII.

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Rotina que converte o nibble menos significativo ou byte no seu hexa *; * codificado em ASCII *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; O byte tem de estar em W antes de rodar esta rotina. Só o nibble menos significativo será convertido.

HEXA_ASCII ; o dado a ser convertido deverá estar presente no nibble; menos significativo de W, assim: 0000 MNPQ.

ANDLW B'00001111' ; W <- W AND 0Fh. Mascarando o byte em W, optando; pelo byte menos significativo.

MOVWF WTEMP ; WTEMP WSUBLW 0x00 ; W 00h - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x30 ; W 30h, que é o byte do caracter 0 (ZERO) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x01 ; W 01h - W

Page 101: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

100

BTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x31 ; W 31h, que é o byte do caracter 1 (UM) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x02 ; W 02h - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x32 ; W 32h, que é o byte do caracter 2 (DOIS) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x03 ; W 03h - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x33 ; W 33h, que é o byte do caracter 2 (TRES) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x04 ; W 04h - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x34 ; W 34h, que é o byte do caracter 4 (QUATRO) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x05 ; W 05h - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x35 ; W 35h, que é o byte do caracter 5 (CINCO) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x06 ; W 06h - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x36 ; W 36h, que é o byte do caracter 6 (SEIS) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x07 ; W 07h - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x37 ; W 37h, que é o byte do caracter 7 (SETE) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x08 ; W 08h - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x38 ; W 38h, que é o byte do caracter 8 (OITO) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x09 ; W 09h - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x39 ; W 39h, que é o byte do caracter 9 (NOVE) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x0A ; W 0Ah - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x41 ; W 41h, que é o byte do caracter (A) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x0B ; W 0Bh - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x42 ; W 42h, que é o byte do caracter (B) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x0C ; W 0Ch - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW0x43 ; W 43h, que é o byte do caracter (C) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x0D ; W 0Dh - W

Page 102: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

101

BTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x44 ; W 44h, que é o byte do caracter (D) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x0E ; W 0Eh - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x45 ; W 45h, que é o byte do caracter (E) em ASCII.

MOVF WTEMP,W ; W WTEMPSUBLW 0x0F ; W 0Fh - WBTFSC STATUS,Z ; Resultou em zero a operação anterior? (ou Z=1?)RETLW 0x46 ; W 46h, que é o byte do caracter (F) em ASCII.

RETURN ; Se nenhuma opção, então retornar qualquer W.

Figura A10 – Rotina inversão das posições dos nibbles.

Page 103: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

102

:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;* Sub-rotina: Troca nibble menos significativo com o mais significativo de um Byte. *:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Esta sub-rotina troca o nibble mais significativo com o menos significativo que chega a ela através; do registrador W. Então: de:X3 X2 X1 X0 Y3 Y2 Y1 Y0; para:Y3 Y2 Y1 Y0 X3 X2 X1 X0

TROCA_NIBBLECLRF STATUSMOVWF WTEMP ; WTEMP W = X3 X2 X1 X0 Y3 Y2 Y1 Y0MOVWF WTEMP1 ; WTEMP1 W = X3 X2 X1 X0 Y3 Y2 Y1 Y0RRF WTEMP,F ;Afeta C. WTEMP=inicial C X3 X2 X1 X0 Y3 Y2 Y1 Y0

; final Y0 C X3 X2 X1 X0 Y3 Y2 Y1RRF WTEMP,F ;Afeta C.WTEMP=inicial Y0 C X3 X2 X1 X0 Y3 Y2 Y1

; final Y1 Y0 C X3 X2 X1 X0 Y3 Y2RRF WTEMP,F ;Afeta C.WTEMP=inicial Y1 Y0 C X3 X2 X1 X0 Y3 Y2

; final Y2 Y1 Y0 C X3 X2 X1 X0 Y3RRF WTEMP,F ;Afeta C.WTEMP=inicial Y2 Y1 Y0 C X3 X2 X1 X0 Y3

; final Y3 Y2 Y1 Y0 C X3 X2 X1 X0

MOVLW B'00001111' ; Byte para mascarar WTEMP.ANDWF WTEMP,F ; com o mascaramento de WTEMP, faz WTEMP =

; inicial Y3 Y2 Y1 Y0 C X3 X2 X1 X0; operando 0 0 0 0 1 1 1 1; em WTEMP: operador AND 0 0 0 0 X3 X2 X1 X0

RLF WTEMP1,F ; Afeta C.WTEMP=inicial C X3 X2 X1 X0 Y3 Y2 Y1Y0; final X3 X2 X1 X0 Y3 Y2 Y1Y0 C

RLF WTEMP1,F ;Afeta C.WTEMP=inicial X3 X2 X1 X0 Y3 Y2 Y1Y0 C ; final X2 X1 X0 Y3 Y2 Y1 Y0 C X3

RLF WTEMP1,F ;Afeta C.WTEMP=inicial X2 X1 X0 Y3 Y2 Y1 Y0 C X3 ; final X1 X0 Y3 Y2 Y1 Y0 C X3 X2

RLF WTEMP1,F ;Afeta C.WTEMP=inicial X1 X0 Y3 Y2 Y1 Y0 C X3 X2 ; final X0 Y3 Y2 Y1 Y0 C X3 X2 X1

MOVLW B'11110000' ; Byte para mascarar WTEMP1.ANDWF WTEMP1,F ; com o mascaramento de WTEMP1, faz WTEMP1 =

; inicial X0 Y3 Y2 Y1 Y0 C X3 X2 X1; operando 1 1 1 1 0 0 0 0; em WTEMP1: operador AND Y3 Y2 Y1 Y0 0 0 0 0

MOVF WTEMP1,WIORWF WTEMP,W ; faz ficar W Y3 Y2 Y1 Y0 X3 X2 X1 X0

MOVF WTEMP,WRETURN

Page 104: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

103

Figura A11 – Rotinas de atraso do motor e de 1ms.

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Rotina de delay para acionamento do motor de passo *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

DELAY_MOTORMOVWF TEMPO1 ; ( 1 TCY ) Carrega tempo1 (unidades de ms)

; ___________________________Inicio do Loop2_____________________________________________

MOVLW .120 ; ( 1 TCY )MOVWF TEMPO0 ; ( 1 TCY ) Carrega tempo0 (p/ contar 1ms)

; incluído estes dois TCY no Tempo Loop1. ; ___________________________Inicio do Loop1_______________________________________

CLRWDT ; ( 1 TCY ) Limpa WDT (perde tempo)DECFSZ TEMPO0,F ; ( 1ou 2 TCY ) Fim de TEMPO0 ?GOTO $-2 ; ( 2 TCY ) Não – volta 2 instruções.

; Sim – salta GOTO;; ***************************************************; * Tempo Loop1: TCYS_1 = 1+1+1+1+2+118*(1+1+2)+1+2 =481; ***************************************************

; ____________________________Fim do Loop1_______________________________________

Page 105: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

104

DECFSZ TEMPO1,F ; ( 1ou 2 TCY ) Fim do TEMPO1?GOTO $-6 ; ( 2 TCY ) Não – volta 6 instruções.

; Sim.;; ****************Para cada TEMP01 = 3****************; Tempo1= 3 2 1 0; * Tempo Loop2: TCYS 2 = 481+1+2+481+1+2 + 481 + 2 =1451; ***************************************************

; ____________________________Fim do Loop2______________________________________________

; *******************TEMP0 TOTAL******************; Para TEMPO0=3; * Tempo Total: TTOTAL = 1 + 1451 + 1 = 1453 * 1µs = 1,453ms; ***************************************************

RETURN ; ( 1 TCY ) Retorna.

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; * Rotina de delay (de 1ms até 256ms) *; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

DELAY_MSMOVWF TEMPO1 ; ( 1 TCY ) Carrega tempo1 (unidades de ms)

; ___________________________Inicio do Loop2_____________________________________________

MOVLW .250 ; ( 1 TCY )MOVWF TEMPO0 ; ( 1 TCY ) Carrega tempo0 (p/ contar 1ms)

; incluído estes dois TCY no Tempo Loop1. ; ___________________________Inicio do Loop1_______________________________________

CLRWDT ; ( 1 TCY ) Limpa WDT (perde tempo)DECFSZ TEMPO0,F ; ( 1ou 2 TCY ) Fim de TEMPO0 ?GOTO $-2 ; ( 2 TCY ) Não – volta 2 instruções.

; Sim – salta GOTO;; ***************************************************; Tempo Loop1: TCYS_1 = 1+1+1+1+2+248*(1+1+2)+1+2 =1001; ***************************************************

; ____________________________Fim do Loop1_______________________________________

DECFSZ TEMPO1,F ; ( 1ou 2 TCY ) Fim do TEMPO1?GOTO $-6 ; ( 2 TCY ) Não – volta 6 instruções.

; Sim.;; ****************Para cada TEMP01 = 1****************; Tempo1= 1 0; * Tempo Loop2: TCYS 2 = 1001+2 =1003; ***************************************************

; ____________________________Fim do Loop2______________________________________________

; *******************TEMP0 TOTAL******************; Para TEMPO0=1; * Tempo Total: TTOTAL = 1 + 1003 + 1 = 1005 * 1µs = 1,005ms; ***************************************************

RETURN ; ( 1 TCY ) Retorna.

Page 106: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

105

A2 – Estimando o torque do sistema motor-haste-mesa

Reimprimindo a Figura 2.2 (agora como Figura A13, para comodidade de

visualização e indicação do ponto de partida e operação do projeto) vê-se que o torque do

motor de passo é função da sua velocidade, esta é dada em pps (passos por segundo). Como

para cada passo é necessário que um pulso de clock acione o drive do motor, então basta

determinar quantos pulsos de clock estão sendo dados por segundo para se ter a velocidade do

motor. Para isto, deve-se verificar atentamente as rotinas UM_MM e DELAY_MOTOR,

como tentou-se fazer na seqüência.

A rotina UM_MM promove 160 passos do motor de passo, que foi a quantidade

que proporcionou a maior aproximação de um deslocamento de 1mm da mesa móvel. Mas,

quantos pulsos de clock está sendo dado por segundo? É importante observar que em cada

passo é chamada a sub-rotina DELAY_MOTOR por duas vezes, a primeira vez com a

variável TEMPO1 igual a 3 e na segunda vez com esta variável valendo 2. Antes de chamá-la

pela primeira vez fez-se o sinal clock ir para o nível lógico alto, o qual permanece neste nível

por aproximadamente 1,453ms, como pode-se verificar no próprio corpo desta rotina (mas,

considerando, também, o tempo das instruções BSF, MOVLW .3 e CALL), agrega-se mais

quatro ciclos de máquina, ou 4µs – resultando, então, em um tempo de nível alto total de

1,457ms. Terminado o referido tempo de atraso que manteve o clock em 1, fez-se o mesmo ir

para o nível lógico baixo e, novamente, foi chamada a rotina DELAY_MOTOR, com a

diferença que, agora, a variável TEMPO_1 é igual a 2. Assim, se for feito as contas como no

primeiro caso, chega-se a um valor de tempo aproximadamente igual a 0,974ms. Desse modo,

a forma de onda do sinal de clock deve ser, provavelmente:

Page 107: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

106

Figura A12 – Forma de onda do sinal de clock do motor de passo.

Levando a velocidade de partida/operação de 411pps nas curvas de torque do

motor de passo, Figura A13, encontramos, aproximadamente, que o torque de partida de todo

o sistema é de 2.500 g.cm e que o torque de operação é de 4.300 g.cm. Portanto, está-se

trabalhando numa região de mais alto torque.

Figura A13 – Indicação do torque e velocidade de trabalho do sistema projetado.

Page 108: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

Livros Grátis( http://www.livrosgratis.com.br )

Milhares de Livros para Download: Baixar livros de AdministraçãoBaixar livros de AgronomiaBaixar livros de ArquiteturaBaixar livros de ArtesBaixar livros de AstronomiaBaixar livros de Biologia GeralBaixar livros de Ciência da ComputaçãoBaixar livros de Ciência da InformaçãoBaixar livros de Ciência PolíticaBaixar livros de Ciências da SaúdeBaixar livros de ComunicaçãoBaixar livros do Conselho Nacional de Educação - CNEBaixar livros de Defesa civilBaixar livros de DireitoBaixar livros de Direitos humanosBaixar livros de EconomiaBaixar livros de Economia DomésticaBaixar livros de EducaçãoBaixar livros de Educação - TrânsitoBaixar livros de Educação FísicaBaixar livros de Engenharia AeroespacialBaixar livros de FarmáciaBaixar livros de FilosofiaBaixar livros de FísicaBaixar livros de GeociênciasBaixar livros de GeografiaBaixar livros de HistóriaBaixar livros de Línguas

Page 109: UNIVERSIDADE FEDERAL DE MINAS GERAIS …livros01.livrosgratis.com.br/cp094100.pdf · PC Program Counter, ou contador de programa. PROM Programmable ROM ou memória somente de leitura

Baixar livros de LiteraturaBaixar livros de Literatura de CordelBaixar livros de Literatura InfantilBaixar livros de MatemáticaBaixar livros de MedicinaBaixar livros de Medicina VeterináriaBaixar livros de Meio AmbienteBaixar livros de MeteorologiaBaixar Monografias e TCCBaixar livros MultidisciplinarBaixar livros de MúsicaBaixar livros de PsicologiaBaixar livros de QuímicaBaixar livros de Saúde ColetivaBaixar livros de Serviço SocialBaixar livros de SociologiaBaixar livros de TeologiaBaixar livros de TrabalhoBaixar livros de Turismo