40
Aplicações: Aplicações: Aplicações: Aplicações: Conversão de Códigos e Motor de Passo Conversão de Códigos e Motor de Passo Conversão de Códigos e Motor de Passo Conversão de Códigos e Motor de Passo •Prof. Adilson Gonzaga

Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Embed Size (px)

Citation preview

Page 1: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Aplicações:Aplicações:Aplicações:Aplicações:

Conversão de Códigos e Motor de PassoConversão de Códigos e Motor de PassoConversão de Códigos e Motor de PassoConversão de Códigos e Motor de Passo

•Prof. Adilson Gonzaga

Page 2: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Conversão de Código ASCII para HexadecimalConversão de Código ASCII para Hexadecimal

• Alguns periféricos, tais como Teclados Alfa-numéricos, Monitores de

Vídeo, Displays de Cristal Líquido, comunicam-se usando o código

ASCII (American Standard Code for Information Interchange)

Aplicação 1

• Como toda a operação (lógica ou aritmética) realizada pelo

Microcontrolador é feita em Binário, e nós utilizamos a representação

Hexadecimal para facilidade de interpretação, se for usado um

teclado ASCII para entrada dos dados deve-se proceder à conversão

de ASCII para Hexadecimal.

•Prof. Adilson Gonzaga

•2

Page 3: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

• Supondo, por exemplo, que se queira inserir números Hexadecimais

através do Teclado do PC conectado via RS232 com um

Microcontrolador 8051 e utilizar esses dados para deslocar um Motor

de passo de um número fixo de passos.

• Valores Hexadecimais possíveis: 00 a FF

• O Teclado gera códigos ASCII para todos

os números, letras, sinais gráficos e

comandos, de acordo com a Tabela ASCII.

•Prof. Adilson Gonzaga

•3

Page 4: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Teclado ASCII

Se o usuário quiser inserir em uma aplicação qualquer um Se o usuário quiser inserir em uma aplicação qualquer um

código Hexadecimal (um byte), via Teclado ASCII.

• 3F (00111111) � Digita 3 �Teclado gera 33h (00110011), ASCII do dígito 3

� Digita F �Teclado gera 46h (01000110), ASCII do dígito F

Como transformar os dois códigos digitados (33h e 46h) em apenas um byte Hexadecimal (3F) que é o correspondente ao valor digitado pelo usuário?

Por exemplo 3F

•Prof. Adilson Gonzaga

•4

Page 5: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

• Duas possibilidades:

1. Ou o dígito é um número ( 0 a 9 )

2. Ou o dígito é uma letra (A a F)

0 1 2 3 4 5 6 7 8 9

| | | | | | | | | |

30h 31h 32h 33h 34h 35h 36h 37h 38h 39h

Número

30h 31h 32h 33h 34h 35h 36h 37h 38h 39h

A B C D E F

| | | | | |

41h 42h 43h 44h 45h 46h

Letra

•Prof. Adilson Gonzaga

•5

Page 6: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Digitado no Teclado

3 F

Códigos ASCII Gerados

33 46

• Logo,

3F

33 46

33h � para ser decodificado para seu valor 3h � 33h – 30h = 3h

• e,

46h � para ser decodificado para seu valor Fh � 46h – 37h = Fh

Ou seja, se o valor digitado for um número basta subtrair 30h do

código ASCII e, se o valor digitado for uma letra basta subtrair 37h do

código ASCII

•Prof. Adilson Gonzaga

•6

Page 7: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

• O primeiro dígito é o MSB e seu resultado hexadecimal gerado é 03h

• O segundo dígito é o LSB e seu resultado hexadecimal gerado é 0Fh

• Logo, no exemplo, para montar o caractere (MSB LSB) deve-se

rotacionar o MSB de 4 posições e fundir (OU lógico) com o LSB.

03 � 30 MSB

0F LSB

3F

OR00110000

00001111

00111111

•Prof. Adilson Gonzaga

•7

Page 8: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Conversão ASCII-HEXA de um dígito

SubSub--rotina CONVrotina CONV

• O dígito ASCII entra

pelo Acumulador

•Prof. Adilson Gonzaga

•8

Page 9: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

• Converte o MSB

• Troca os nibles

Conversão ASCII-HEXA de dois dígitos

• Converte o LSB

• Funde (OR) os dois bytes

gerando apenas um hexadecimal

•Prof. Adilson Gonzaga

•9

Page 10: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

•Prof. Adilson Gonzaga

•10

Page 11: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

•Prof. Adilson Gonzaga

•11

Page 12: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Aplicação 2

Conversão de Hexadecimal para Código ASCIIConversão de Hexadecimal para Código ASCII

• Como toda operação (lógica ou aritmética) realizada pelo

Microcontrolador é feita em Binário, e nós utilizamos a representação

Hexadecimal para facilidade de interpretação, se for usado um

Display ou um Monitor de Vídeo ASCII para saída dos dados deve-se

proceder à conversão de Hexadecimal para ASCII.

•Prof. Adilson Gonzaga

•12

Page 13: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

ASCII

33 46

Microcontrolador

Hexadecimal 3F

(00111111)

Conversor A/D

•Prof. Adilson Gonzaga

•13

Page 14: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

•Hexadecimais possíveis (8 bits): de 00 a FF

Se for um dígito numérico 0 ---- 9 ���� deve-se somar 30h para

se obter o ASCII equivalente entre 30h --- 39h

Se for uma letra A ---- F ���� deve-se somar 37h para se obter Se for uma letra A ---- F ���� deve-se somar 37h para se obter

o ASCII equivalente entre 41h --- 46h

Como não existem valores hexadecimais impossíveis de

serem representados em ASCII, não é necessário adicionar

nenhum filtro.

•Prof. Adilson Gonzaga

•14

Page 15: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

SubSub--rotina CONV2rotina CONV2

Conversão HEXA-ASCII de um dígito

•Prof. Adilson Gonzaga

•15

Page 16: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Exemplo

• O conteúdo do Acumulador contém o código 3F Hexadecimal

(8 Bits) que deverá ser enviado para o monitor de vídeo em

ASCII, para ser visualizado.

• Logo,

3F ���� 03 + 30h ���� 33h0F + 37h ���� 46h

• Deve-se, então, dividir o byte em dois com o valor dos

dois nibles posicionados na parte menos significativa de

cada um, zerando-se o nible mais significativo de cada

byte.

•Prof. Adilson Gonzaga

•16

Page 17: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

O valor em Hexadecimal entra

pelo Acumulador. ���� Ex: A =

3Fh

Conversão HEXA-ASCII de dois dígitos

Os valores dos dois dígitos em

ASCII saem em:

R0 = LSB ���� Ex: R0 = 46h

A = MSB ���� Ex: A = 33h

•Prof. Adilson Gonzaga

•17

Page 18: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

•Prof. Adilson Gonzaga

•18

Page 19: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

•Prof. Adilson Gonzaga

•19

Page 20: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Aplicação 3

Conversão de

Hexadecimal para BCD

BCD – Decimal Codificado em Binário

•Prof. Adilson Gonzaga

•20

Neste exemplo será utilizado

sempre o BCD Packed (ou BCD

8421), cuja representação de 2

dígitos BCD é realizada com

apenas 1 Byte.

Page 21: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Conversão de Hexadecimal para BCD

Decimal Hexa

00 00

01 01

02 02

03 03

04 04

05 05

06 06

•Prof. Adilson Gonzaga

•21

06 06

07 07

08 08

09 09

10 0A

11 0B

12 0C

13 0D

14 0E

15 0F

16 10

0 0 0 0 1 0 0 1

0 0 0 1 0 0 0 0

0 0 0 0 1 0 0 1

0 0 0 1 0 0 0 0

•Logo, se o número Hexa

estiver entre 0A e 13,

soma-se 1x06

Page 22: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Decimal Hexa

17 11

18 12

19 13

20 14

21 15

22 16

23 17

24 18

25 19

26 1A

11+06=17

12+06=18

13+06=1914+06=1A+06=20

15+06=1B+06=21

16+06=1C+06=22

• Se o número hexa estiver entre 14 e 1D soma-se 2x06

• Se o número estiver

•Logo, se o número Hexa

estiver entre 0A e 13, soma-

se 1x06

•Prof. Adilson Gonzaga

•22

26 1A

27 1B

28 1C

29 1D

30 1E

31 1F

32 20

33 21

34 22

35 23

36 24

17+06=1D+06=23

18+06=1E+06=24

19+06=1F+06=25

1A+06=20+06=26

1B+06=21+06=27

1C+06=22+06=28

1D+06=23+06=29

1E+06+06+06=30

1F+06+06+06=31

20+06+06+06=32

21+06+06+06=33

22+06+06+06=34

• Se o número estiver

entre 1E e 27 soma-se

3x06

Page 23: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

•O algoritmo pode ficar bastante complexo seguindo este raciocínio.

• O 8051 possui uma instrução que faz o Ajuste Decimal do Acumulador

DA A

• Esta instrução somente deve ser utilizada quando a operação realizada anteriormente foi com números BCD.

•Prof. Adilson Gonzaga

•23

com números BCD.

Exemplo:

19 + 1 = 1A � DA A � 20

•A instrução não opera corretamente onde isto não acontece.

Exemplo:

1F + 1 = 20 � DA A � 26

Page 24: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Algoritmos para conversão Hexa-BCD

Algoritmo_1:

1. Entrar com o número Hexadecimal a ser convertido em R0

2. Inicializar um contador BCD em Zero

3. Decrementar R0 até zero e simultaneamente incrementar o contador BCD

•Prof. Adilson Gonzaga

•24

O maior número hexadecimal de dois dígitos que pode ser convertido é o : 63h = 99 em BCD

contador BCD

4. Quando o valor do número Hexadecimal chegar em zero, o Acumulador terá realizado o mesmo número de contagens em BCD

Page 25: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

•Prof. Adilson Gonzaga

•25

Este exemplo não testa se o número Hexadecimal a ser convertido é menor que 63h, o que deve ser feito externamente no programa principal.

Page 26: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Algoritmo_2:

1. Dividir o número Hexadecimal (8 BITS), a ser convertido, por 10 (0Ah)

2. O resultado da divisão gera um número BCD unpacked, com o MSB no Acumulador e o LSB no registrador B

3. Transformar o BCD unpacked para BCD packed(8421)

•Prof. Adilson Gonzaga

•26

(8421)

0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1

1 0 0 1 1 0 0 1

09 09

99

Page 27: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Exemplo: Programa que gera um Contador BCD na Porta P1, de 00 a 99, continuamente retornando a zero.

•Prof. Adilson Gonzaga

•27

Page 28: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

MOTOR DE PASSOMOTOR DE PASSO“Step Motor”“Step Motor”

Define-se MOTOR DE PASSO como um“atuador incremental eletromagnético”.

Aplicação 4

•Prof. Adilson Gonzaga

•28

Page 29: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

O Motor de Passo converte “pulsos digitais de entrada” emmovimentos angulares em seu eixo.

Definição prática:Definição prática:

•Prof. Adilson Gonzaga

•29

Page 30: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Características importantesCaracterísticas importantes

• Deslocamento angular diretamente proporcional ao

número de pulsos de entrada.

• Erro angular por passo pequeno ( 5% do passo) e

não acumulativo.não acumulativo.

• Possibilita trabalho em “malha aberta”.

• Capacidade de trabalho em baixíssimas

freqüências.

• Retenção de posição sem uso de freio, etc...

•Prof. Adilson Gonzaga

•30

Page 31: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

CURVA CARACTERÍSTICACURVA CARACTERÍSTICA

•Prof. Adilson Gonzaga

•31

Page 32: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

TEORIA DE OPERAÇÃOTEORIA DE OPERAÇÃOTEORIA DE OPERAÇÃOTEORIA DE OPERAÇÃO

•Prof. Adilson Gonzaga

•32

Page 33: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Circuito de ControleCircuito de ControleUNIPOLARUNIPOLAR simplificadosimplificado

•Prof. Adilson Gonzaga

•33

Page 34: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Comutação nas FasesComutação nas Fases(excitação dupla)

•Prof. Adilson Gonzaga

•34

Page 35: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Sistema Típico de Controle com Sistema Típico de Controle com Motor de PassoMotor de Passo

•Prof. Adilson Gonzaga

•35

Page 36: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

CircuitoCircuito AcionadorAcionador (Indexer + Driver) de Motor de (Indexer + Driver) de Motor de PassoPasso (excitação dupla)

•Prof. Adilson Gonzaga

•36

Page 37: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Exemplo de Conexão de um Microcontrolador Exemplo de Conexão de um Microcontrolador Exemplo de Conexão de um Microcontrolador Exemplo de Conexão de um Microcontrolador 89S52 com um Driver/Indexador de Motor de Passo89S52 com um Driver/Indexador de Motor de Passo89S52 com um Driver/Indexador de Motor de Passo89S52 com um Driver/Indexador de Motor de Passo

Clock

Direção

Inibe

•Prof. Adilson Gonzaga

•37

Page 38: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Clock

Direção

Inibe

O Clock, na descida de borda, armazena a Direção (1 ou 0)

que o motor girará na próxima subida de borda.

• Direção = 0 � Horário

• Direção = 1 �Anti-horário

• Inibe = 1 � Operação Normal

• Inibe = 0 � Pára o Motor de Passo

• Frequência do clock (Hz) = Passos por Segundo (pps) no Motor

•Prof. Adilson Gonzaga

•38

Page 39: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Exemplo de Comando de um pulso em um Motor de Passo

(Usando subrotina de Atraso).

•Prof. Adilson Gonzaga

•39

Page 40: Aplicações: Conversão de Códigos e Motor de Passoiris.sel.eesc.usp.br/sel614/Aula6.pdf · Microcontrolador8051 e utilizar esses dados para deslocar um Motor de passo de um número

Comando de Motor de Passo usando Timer e Interrupção

•Prof. Adilson Gonzaga

•40