Ler encoder quadrature sem int

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Ler encoder quadrature sem int

Mensagempor eagle_good » 04 Ago 2007 17:55

Pessoal .......montei o projeto baseado na tecnica de interrupção para ler 02 encoder (shaft encoder quadratura) qdo ocorre a interrupção cheque
outro pino para saber o sentido,.......mas como e 02 encoder e ocodigo e grande ........ele se perde sim ........nunca retorna exatamente no mesmo lugar......

Ou seja esta maneira nao e indicada ........ estou tentando usar os counter para isto mas nao tenho ideia.....

Alguem pode nos ajudar a ler encoder quadratura (A e B) usando os counter e claro o sentido ?????????
Ou seja como incrementar e decrementar o counter usando os canais a e b sem interromper o bichionho a cada clock do encoder ???
_________________
Sam eagle good
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP

Mensagempor Red Neck Guy » 04 Ago 2007 18:07

Olha uma alternativa é utilizar um contador com entrada de up/down externo e ligar o sinal A no clock, B no up/down e Z no clear...
Mas isso é bem tosco...
Eu ligaria os sinais na INT...
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor eagle_good » 04 Ago 2007 18:24

BLZ Aquino......

Eu ja fiz com a INT... mas o code de 58K e calculo da posição..

o bichinho naum funciona ..pode acreditar.....

Estou pensando em usar os counters para num interromper o danadinho que mesmo em 60mhz se perde lega qudo se chama na chincha........vi um projeto professional e usava um ci que interpretava
o encoder e inclusive controlsava a position .......
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP

Mensagempor eagle_good » 05 Ago 2007 17:27

LS7082/3/4 series quadrature converters. These 8 pin chips convert quadrature encoder inputs
to either pulse and direction, or up clock and down clock signals.
They are configurable to X1, X2, or X4 operation, and are very simple to use.
However, they have no internal counter,so the pulses must be processed immediately.
The only solution I have thought of, but not tested is to use a
PIC12C508 or 8051 (I have code for the PIC) to decode the
quadrature into count and direction. The outputs of this device
are up-clock/down-clock.


Pessoal e possivel configurar o microcontroller com:
01 input counter (uma entrada contador)
01 input up/down (e outra entrada como direção de contagem)

sem usar a interrupção e claro.
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP

Mensagempor andre_luis » 06 Ago 2007 08:38

Já postei em outro tópico uma implementação com flip-flop para isso.
Não foi a solução ideal, mas isso tira a sobrecarga de processamento de cima do uC. A dica do Aquino em tratar externamente procede se a taxa de rotação do encoder for muito alta.

Existem uC que já possuem módulos de HW dedicados a isso; nao sei se é o caso do que voce está usando.

O que voce pode verificar é se seu uC possui Timer com entrada por captura do pino externo. Se sua intensao for medir posicao esquece, mas se for medir velocidede de rotacao, voce poderá definir uma interrupção a cada estouro do Timer.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor brasilma » 06 Ago 2007 12:22

Sua rotina está fazendo mais coisas do que deveria, ou seja, está estruturada da forma errada.

O que a interrupção deve fazer é apenas pegar o nível da segunda saída do encoder qdo for interrompido, e se for 1 incremetar uma variável ou se 0 decrementar, e mais nada; para fazer isto bastam apenas algumas linhas.

O resto do processamento dos dados faz por uma rotina normal.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor andre_luis » 06 Ago 2007 13:20

brasilma escreveu:...e mais nada; para fazer isto bastam apenas algumas linhas...


O processamento em si é bastante simples.
O que devemos saber é a aplicação disso. Se for para controlar o menu de um painel, pode ser implementado via firmware ( com ou sem interrupção ). Agora, se for para ima aplicacao mais industrial com alta taxa de rotacao, o seu uC estará fadado a praticamente funcionar apenas como uma interface de encoder.

Por isso, seria cabível se pudesse quantificar a velocidade necessária para analizarmos melhor a situacao.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor brasilma » 06 Ago 2007 14:30

o mais importante em qualquer caso, é não perder pulsos
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra


Voltar para 8051

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x