Messaggio
da xemet » giovedì 23 agosto 2007, 9:26
mi sembra un ottimo punto di partenza...non capisco perchè dici "gli" encoder, per aumentare o diminuire la velocità (feed override) te ne serve uno...oppure non ho capito bene cosa vuoi fare...
devi usare il componente HAL "encoder" che serve esattamente a contare gli impulsi che arrivano da un encoder in quadratura...
devi crearti un file HAL che sia più o meno così (oppure aggiungere queste righe ad uno che hai già :
loadrt encoder
(questo carica il componente)
Questo componente ha i due ingressi per le due fasi dell'encoder, quindi poi dovrai collegare questi due pin ai pin corrispondenti della parallela:
net phase-A encoder.0.phase-A parport.0.pin-XX-in
net phase-B encoder.0.phase-B parport.0.pin-XX-in
a questo punto il componente encoder ha dei pin in uscita tra cui ce n'è uno che riporta il conto degli impulsi, denominato "encoder.0.counts", tutto quello che devi fare ora è di collegare questo pin al pin di conteggio per il feed override di HALUI:
net counts encoder.0.counts halui.feed-override.counts
Ricordati di collegare le funzioni realtime del componente encoder ai rispettivi thread...il componente ha due funzioni una veloce e un lenta, dovrai scrivere:
addf encoder.capture-position servo-thread
addf encoder.update-counters base-thread
E dovrebbe funzionare...
Poi ci sono da sistemare un po' di valori di scala e di parametri del componente encoder per far si che abbia il comportamento desiderato...
Ciaoo