Buongiorno a tutti, avrei bisogno di un piccolo aiuto.
Come da titolo avrei bisogno di aiuto nel settaggio del modulo qei di un 18f2431 che stò usando per costruire un controller pid.
Il quarzo è da 10MHz, PPL abilitato.
Vorrei utilizzare il modulo qei in modalità "velocity measure" ma ho qualche problemino
Di seguito vi posto il codice che uso per parametrizzare il timer5, il cap1con e il queicon
void InitQEI(void)//DA RIVEDERE!!!!!!!!
{
QEICON = 0b00011000; //update 4xmode, reset tramite maxcnt
DFLTCON = 0x00;//0b00110100; //Filtri attivi su chA e chB, divisore a 1:32
POSCNTL = 0; // Reset position counter
POSCNTH = 0; // Reset position counter
MAXCNTL = (unsigned char)(MAX_CNT);
MAXCNTH = (unsigned char)(MAX_CNT >> 8);
if (QEICONbits.VELM==0)
{
T5CON=0b10000001;//timer abilitato,special event enable,prescaler 1:1
CAP1CON=0b01001111// special event trigger mode, time based reset enable
VELRL=0;
VELRH = 0;
}
return;
}
Parametrizzato in questo modo conta un po' quello che vuole (ho uno strumento di riferimento collegato allo stesso encoder per rilevare la velocità), numeri sempre diversi e mai stabili.
la formula che uso per ricavare la velocità è la seguente:
rpm_motore = ((Fosc/4)/(ppr*qei_update_mode*vel_reduction*timer5_ps*count _timer))*60
ed è ricavata dall'application note 899a microchip (
http://ww1.microchip.com/downloads/e...tes/00899a.pdf), equation 5.
Non riesco a capire dove sbaglio, sullo strumento (1 rpm di risoluzione) la velocità che leggo è stabile quindi credo che il problema sia nel modo in cui parametrizzo il pic. Ho provato a settare il cap1 come frequency measure ma nulla. Ho provato a cambiare il prescaler del timer5 ma nulla, ho cambiato anche il velocity pulse reduct ratio ma nulla.
Qualcuno di voi pò mica dirmi dove sbaglio, non riesco proprio a capire dove è il problema.
Scusate il disturbo ma il datasheet mi risulta poco chiaro su questa modalità e non trovo nessuna documentazione ulteriore.
Grazie in anticipo per l'aiuto.
Marco