Página 1 de 1
Ler encoder quadrature sem int

Enviado:
04 Ago 2007 17:55
por eagle_good
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

Enviado:
04 Ago 2007 18:07
por Red Neck Guy
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...

Enviado:
04 Ago 2007 18:24
por eagle_good
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 .......

Enviado:
05 Ago 2007 17:27
por eagle_good
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.

Enviado:
06 Ago 2007 08:38
por andre_luis
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.
+++

Enviado:
06 Ago 2007 12:22
por brasilma
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.

Enviado:
06 Ago 2007 13:20
por andre_luis
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.
+++

Enviado:
06 Ago 2007 14:30
por brasilma
o mais importante em qualquer caso, é não perder pulsos