Aula7 Testesdeestabilidadeefundamentosdecineticaquimica 090430131306 Phpapp01
Aula7.ppt [Modo de Compatibilidade]iris.sel.eesc.usp.br/sel433a/Aula7.pdf · 2013-05-03 · Ler um...
Transcript of Aula7.ppt [Modo de Compatibilidade]iris.sel.eesc.usp.br/sel433a/Aula7.pdf · 2013-05-03 · Ler um...
Aplicações:Aplicações:Aplicações:Aplicações:
Conversão de Códigos e Conversão de Códigos e Conversão de Códigos e Conversão de Códigos e Controle de Motor Controle de Motor Controle de Motor Controle de Motor de Passode Passode Passode Passo
Prof. Adilson Gonzaga
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
• 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.
Aplicação 1
• 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
Teclado ASCII
Se o usuário quiser inserir em uma aplicação qualquer código Se o usuário quiser inserir em uma aplicação qualquer 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
• 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
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
• 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
Conversão ASCII-HEXA de um dígito
SubSub--rotina CONVrotina CONV
• O dígito ASCII entra
pelo Acumulador
•Prof. Adilson Gonzaga
•8
• 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
Aplicação 2
Conversão de Hexadecimal para Código ASCIIConversão de Hexadecimal para Código ASCII
Ler um código hexadecimal de um conversor Analógico/Digital (A/D)
de 8 bits (00 a FFh) e mostrar este valor em um monitor de vídeo
(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
ASCII
33 46
Microcontrolador
Aplicação 2
Hexadecimal 3F
(00111111)
Conversor A/D
•Prof. Adilson Gonzaga
•13
•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
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 ���� 33h
0F + 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
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
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.
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
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
•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
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
•Prof. Adilson Gonzaga
•25
Este exemplo não testa se o número Hexadecimal a ser convertido é menor que 64h, o que deve ser feito externamente no programa principal.
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
Exemplo: Programa que gera um Contador BCD na Porta P1, de 00 a 99, continuamente retornando a zero.
•Prof. Adilson Gonzaga
•27
Comando de MOTOR Comando de MOTOR
DE PASSODE PASSO
“Step Motor”“Step Motor”
Define-se MOTOR DE PASSO como um
“atuador incremental eletromagnético”.
Aplicação 4
•Prof. Adilson Gonzaga
•28
O Motor de Passo converte “pulsos digitais de entrada” em
movimentos angulares em seu eixo.
Definição prática:Definição prática:
•Prof. Adilson Gonzaga
•29
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
Funcionamento do Funcionamento do StepStep MotorMotorFuncionamento do Funcionamento do StepStep MotorMotor
•Prof. Adilson Gonzaga
•31
Circuito de ControleCircuito de Controle
UNIPOLARUNIPOLAR simplificadosimplificado
•Prof. Adilson Gonzaga
•32
Sistema Típico de Controle com Sistema Típico de Controle com
Motor de PassoMotor de Passo
•Prof. Adilson Gonzaga
•34
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
•35
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
•36
Exemplo de Comando de um pulso em um Motor de Passo
(Usando subrotina de Atraso).
•Prof. Adilson Gonzaga
•37