quadrature encoder 18F4431

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

quadrature encoder 18F4431

Mensagempor edusoppa » 11 Ago 2012 01:40

boanoite pessoal,

Estou querendo fazer um medir de velocidade e posição com o pic 18f4431 masestou com algumas dificuldades, será que poderiam me ajudar? estou usando o mcc18 e mplab.

Obrigado.
edusoppa
Nibble
 
Mensagens: 55
Registrado em: 23 Out 2006 15:55

Mensagempor xultz » 11 Ago 2012 12:00

Podemos, se você disser qual é a dificuldade.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor edusoppa » 11 Ago 2012 18:29

Então na verdade já fiz varios testes,mas cheguei a conclusão que ainda não entendi como o hardware irá funcionar de fato.
Para medir velocidade, entendi que preciso de um timer5 mas qual é o valordo timer5? e entendi também que a cada 4pulsos do encoder da um no "velcap" e ai o valor do TMR5 passa para o VELR, quando lei esse registrador ele me mostra uns valores doidos, e quando devo ler esse registrador? e por ai vai.
Estou testando no proteus, coloquei dois sinais de onda quadrado em QEA eQEB devados de 90graus. Não estou usando INDX.
Obrigado.
edusoppa
Nibble
 
Mensagens: 55
Registrado em: 23 Out 2006 15:55

Mensagempor RobL » 11 Ago 2012 22:00

edusoppa escreveu:Então na verdade já fiz varios testes,mas cheguei a conclusão que ainda não entendi como o hardware irá funcionar de fato.
Para medir velocidade, entendi que preciso de um timer5 mas qual é o valordo timer5? e entendi também que a cada 4pulsos do encoder da um no "velcap" e ai o valor do TMR5 passa para o VELR, quando lei esse registrador ele me mostra uns valores doidos, e quando devo ler esse registrador? e por ai vai.
Estou testando no proteus, coloquei dois sinais de onda quadrado em QEA eQEB devados de 90graus. Não estou usando INDX.
Obrigado.


Vá por partes: Você quer medir velocidade.
Precisa de uma régua e um relógio.


Para medir velocidade, entendi que preciso de um timer5 mas qual é o valordo timer5?


O timer é seu relógio e você pergunta : Qual valor deve ter seu relógio?
Suponho que o Bolt quando ganhou o ouro, não colocou o tempo no relógio mas o relógio marcou o tempo que ele levou correndo.
Então, um pulso, dará a partida no seu relógio e outro pulso (a fita de chegada) dará o tempo final.
Se eu dividir a distância pelo tempo do relógio, tenho a velocidade.
Se o Bolt ficar dando voltas na pista, exatamente como seu motor, e se você tiver um pulso a cada volta e no seu relógio marcar 1 segundo, entre os pulsos, você tem Uma Volta por Segundo, ou 1 RPS.
Para medir posição, use somente uma régua. Veja quantos pulsos por determinado espaço angular tem seu encoder.
Agora sim, vamos para o micro e seus registros. Veja aí quem é seu relógio e sua régua.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor edusoppa » 12 Ago 2012 11:49

Gostei da comparação, hahahah.

Então já tinha imaginado algo assim, vamos la. O meu encoder da 16 pulsos por volta, o fato é que não estou conseguindo ler o TMR5 após esses 16 pulsos, ou melhor quando leio o VELR eu só obtenho o valor 0, acredito que a interrupçao não esteja funcionando, ou eu não estou sabendo fazer.
Você poderia postar uma parte de código, um exemplo, dai acho que ficaria mais fácil.
Obrigado.
edusoppa
Nibble
 
Mensagens: 55
Registrado em: 23 Out 2006 15:55

Mensagempor edusoppa » 12 Ago 2012 11:49

Gostei da comparação, hahahah.

Então já tinha imaginado algo assim, vamos la. O meu encoder da 16 pulsos por volta, o fato é que não estou conseguindo ler o TMR5 após esses 16 pulsos, ou melhor quando leio o VELR eu só obtenho o valor 0, acredito que a interrupçao não esteja funcionando, ou eu não estou sabendo fazer.
Você poderia postar uma parte de código, um exemplo, dai acho que ficaria mais fácil.
Obrigado.
edusoppa
Nibble
 
Mensagens: 55
Registrado em: 23 Out 2006 15:55

Mensagempor Maffeis » 12 Ago 2012 13:06

soh po curiosidade quais sinais o pic recebe

A A/ B B/?
Maffeis
Word
 
Mensagens: 501
Registrado em: 07 Ago 2010 19:10

Mensagempor edusoppa » 12 Ago 2012 20:50

na verdade são dois sinais de onde quadrada defasadas de 90graus.
valew.
edusoppa
Nibble
 
Mensagens: 55
Registrado em: 23 Out 2006 15:55

Mensagempor edusoppa » 13 Ago 2012 20:34

E ai pessoal alguem pode me ajudar?

Eu fiz essas configurações:

void main()
{

unsigned char num2char[5];
unsigned int x, x_ant=0;

TRISB = 0x00;
TRISC = 0x00;
TRISD = 0x03;
TRISE = 0x00; // SAIDA
TRISA = 0b11111111;
ANSEL0 = 0b11100111;
QEICON = 0x18;
POSCNTH=0x00;
POSCNTL=0x00;
MAXCNTH=0x00;
MAXCNTL=0xFF;
PIE3bits.IC2QEIE=1;
IPR3bits.IC2QEIP=1;
PIR3bits.IC2QEIF=0;
}

ai configurei a interrupção de alta prioridade do IC2DEIF mas ela nunca ocorre.
Poderiam me ajudar.
Obrigado.
edusoppa
Nibble
 
Mensagens: 55
Registrado em: 23 Out 2006 15:55

Mensagempor ze » 14 Ago 2012 12:57

oi. nao conheço este mc. mas ele não tem algo equivalente a GIE? Geral interrupt enable? cadê a habilitação? estaria em qeicon? Otra cosa. Para ler contagens não precisa interrupt. Basta ligar a entrada de um contador qualquer num pino. Faça 1 teste p. vc entender. Depois vá além...numa interrupt por timer digamos 1 segundo, leia numa variável o valor do contador - o resultado vai ser em hz - zero-o para a próxima captura.

Também não sei se tem como ler sinal de encoder defasados direto no hw. Diga-se ler direção da rotação. Mas por sw me lembro de ter feito algo do genero há alguns anos num 8051 (em asm). Tenho que procurar... no momento estou sem motivação...
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor edusoppa » 15 Ago 2012 13:30

Fala Lellis,

Sim, preceisa habilitar a interrupção global e etc... é que fiz isso em uma função, ela não está ai porque só coloquei uma parte do código. Bom, já consegui fazer, fiz dessa forma que você falou e fiz de acordo com o QEI do microcontrolador. Esse hd deste uc tem como ver a velocidade, o sentido, já está pronto, só precisa acessar a interrupção correta. Eu não estava utilizando a interrupção correta por achar que o bloco de position era independente do bloco de velocity, mas agora já funcionou.
Valew galera, obrigado pela ajuda.
edusoppa
Nibble
 
Mensagens: 55
Registrado em: 23 Out 2006 15:55

Mensagempor Maffeis » 15 Ago 2012 14:04

Qual a frequencia maxima que ele aguenta

hj agente usa encoder de 2048, mais tem concorrente usando 10.000

será que rola nesse cara

hoje acho está sendo usado o PIC18F2525
Maffeis
Word
 
Mensagens: 501
Registrado em: 07 Ago 2010 19:10

Mensagempor andre_luis » 15 Ago 2012 21:04

Se tratar Encorer por firmware, não sobra processamento para mais nada.
Tem de usar um uC que possua módulo de HW para isso.


+++
"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 edusoppa » 16 Ago 2012 19:49

Cara não fiz o teste do minimo que ele suporta, mas eu to usando um cristal de 10MHz com PLL interno o que me da 40MHz de clock, então chego a a um TCY de 100ns, como ele conta a cada 3 pulsos, da para ter uma idéia da velocidade, pois é todo feito por hw. Vale a pena dar uma olhada.
Abraço.
edusoppa
Nibble
 
Mensagens: 55
Registrado em: 23 Out 2006 15:55


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

x