Vai al contenuto
PLC Forum


Pic/encoder


sfinge

Messaggi consigliati

Salve a tutti!

Vorrei che qualcuno mi desse una dritta in merito a questo:

Sto tentando di misurare la velocità di rotazione di un albero motore con encoder

calettato, a 5 impulsi giro.Il micro è un pic16f876 ed ho utilizzato il seguente

metodo.Ho impostato Tmr0 con interrupt ogni 65,536Ms per avere una finestra di

di tempo dove andare a misurare la quantità di impulsi accumulati dall'encoder.

Gli impulsi arrivano su RB0 e registrati dall'evento di interrupt.

All'evento interrupt timer memorizzo gli impulsi accumulati all'istante;

Sul successivo interrupt timer eseguo la differenza tra il nuovo valore di

impulsi registrati e quelli vecchi.Nel Main calcolo i giri/minuto.

Esempio calcolo: Con Speed 30% Giri=(8 * 15 * 60) / 5 = 1440

15 è 1000Ms/65,536Ms

Riporto la tabella delle misurazione effettuate attraverso oscilloscopio e

valori calcolati dal micro.

Speed Freq.Hz Punti Enc. Giri/m Giri/m Errore

Reali Micro %

20% 32 2 384 360 6,25

30% 122 8 1464 1440 1,6

40% 181 12 2172 2160 0,5

50% 215 15 2580 2700 4,65

60% 240 16 2880 2880 0

70% 256 17 3072 3060 0,3

80% 268 18 3216 3240 0,7

90% 276 18 3312 3240 2,17

100% 288 19 3456 3600 4,16

Come posso avere una precisione maggiore?Forse allargando la finestra del timer?

P.S Vorrei non sprecare la risorsa tmr0 impostando lo start timer sul fronte

degli impulsi encoder ma continuando a lavorare con il timer in background per

effettuare altre eventuali temporizzazioni.

Ciao!! e grazie per l'attenzione.

Link al commento
Condividi su altri siti


Scusa sfinge, ma mi sembra che tu sia un membro dell'UCAS :D (Ufficio Complicazioni Affari Semplici).

Per misurare una velocità, sia essa angolare o lineare, partendo da un encoder è prima di tutto necessario misurare un numero di impulsi significativo. Poi si misura o una frequenza od un periodo. Se vuoi conoscere quanti rpm (rivoluzioni per minuto) fa il tuo albero con un encoder da 5 imp/giro devi prima fissare i limiti minimo e massimo di velocità. Ammettiamo di avere velocità massima 3000 rpm, corrispondenti a 250 Hz con un encoder da 5 imp/giro. Con questa frequnza, corrispondente ad un periodo di 4 ms è conveniente misurare il periodo.

Al primo interrupt di RB0 fai partire un timer, p.e. T0; sul successivo RB0 interrupt lo blocchi e lo leggi. Poi, al successivo interupt, riparti da capo con la sequenza. Sfruttando due timer puoi avere la misura del periodo per ogni impulso. L'unica avvertenza è prevedere l'abilitazione dell'interrupt alla scadenza del timer, perchè, con rotazioni a bassa velocità, accade che il timer raggiunga il massimo conteggio e debbe essere ricaricato.

Se invece vuoi misurare la frequenza devi stabilire quale è la precisione richiesta. Ammettiamo tu voglia misurare con precisione >=1%. Devi misurare almeno 100 impulsi. Ora devi stabilire quale sarà la minima velocità ancolare misurabile con questa precisione. Tieni presente che con questo encoder devi aprire una finestra di almeno 1" per avere questa precisione con una velocità di 1200 rpm. Infatti 1200/60 = 20 giri/secondo che corrispondono a 100 impulsi.

Link al commento
Condividi su altri siti

Ciao Livio e grazie della risposta esaudiente ma..

vediamo se ho capito.

Nel mio caso specifico:

Frequenza alla rotazione minore 32 Hz ovvero un'impulso ogni 30Ms circa.

Frequenza alla rotazione massima 288Hz ovvero un'impulso ogni 3Ms circa.

Primo impulso su RB0 > Programmo TMR0 per overflow a 40Ms

Secondo impulso su RB0 > Fermo TMR0 > Leggo contenuto di TMR0 > Eseguo differenza fra V impostato e

V raggiunto= Tempo trascorso.

Esempio Prescaler a 256 TMR0=100 Conteggio raggiunto 212

Tempo trascorso= 112*256=28Ms circa (QUARZO 4Mhz) un giro completo in 28*5=140Ms (7 al Secondo) (428 al minuto).

Ho capito bene?

Ciao e Buon anno!!

Link al commento
Condividi su altri siti

Sicuramente o io non ho capito cosa vuoi fare o tu non hai compreso come si misura la velocità :)

Se, come ho capito io, vuoi misurare una velocità angolare hai a disposizione due metodologie:

1 - misuri la frequenza degli impulsi dell'encoder

2 - misuri il periodo tra due impulsi.

Con i parametri che dichiari ritengo sia più conveniente la misura del periodo. COme fare? Programmi T0 al massimo, cioè 0xFF, e abiliti l'interrupt di overflow. Sull'interrupt di RB0 abiliti T0, poi aspetti il prossimo interrupt di RB0. Se nel frattempo scade il timer0 sull'interrupt incrementi una variabile. All'arrivo dell'interrupt di RB0 leggi T0 ed il valore raggiunto dalla variabile. Questo ti da il tempo tra i due interupts, da cui ricavi la velocità (basta moltiplicare per una costante). Se usi il prescaler di T0 allunghi il tempo di conteggio massimo, ma la risoluzione sarà inferiore. E' una tua scelta: precisione e complicazioni o semplificazione e perdita di precisione.

Link al commento
Condividi su altri siti

qui puoi trovare un scheda encoder per pic

****

Tra gli esempi di codice sorgente c`e` anche la scheda encoder con la visualizzazione su lcd

ciao

walter

Modificato: da Gabriele Corrieri
Link al commento
Condividi su altri siti

Matteo Montanari
Chissà quale link tanto scandaloso ha messo walterword per essere censurato in questo modo!?!?
Modificato: da keosmm
Link al commento
Condividi su altri siti

Perbacco keosmm, hai fatto tutto il lavoro che toccava ad un moderatore! Alla prima occasione ti offro una birra :D .

Tralasciando le battute scherzose keosmm ha spiegato chiaramente i motivi. Dispiace la censurare l'amico Walter (tra l'altro non ha neanche scritto parolacce) che sicuramente è in buona fede, ma se passa per lui dopo ce ne sono altri dieci che pretendono (giustamente) il medesimo trattamento.

Per i curiosi: basta cercare un poco nel forum microprocessori e quella scheda la si trova, è roba buona (per forza c'è anche il mio contributo :lol: )

Buon 2006 a tutti

Link al commento
Condividi su altri siti

Non intendo fare polemica e non mi interessa assolutamente

sapere come realizzare una scheda encoder con un pic

( la so fare da solo ) ; credo però che il mio QI valga , almeno, tanto quanto il TUO

SALUTI

Link al commento
Condividi su altri siti

Gabriele Corrieri

Ciao

Vediamo se riesco a dire quanto Keos e Livio hanno detto in altro modo ...

Se venditore di auto vendo Fiat (esempio) è ritenuta pubblicità che mi frutta guadagno se dico che Fiat va benissimo, e che puoi trovare auto Fiat presso il mio concessionario ...

Se mi limito a dire che Fiat va benissimo non è pubblicità, intesa come una cosa che mi produce guadagno personale, perchè non è detto che tu venga a comprare Fiat da me.

Il discorso "pubblicità" all'interno dello staff è riassumibile così: se il post reca per l'autore un guadagno diretto allora è pubblicità (Walter ha pubblicizzato un link di un sito riconducibile alla sua persona fisica, dove si vende materiale), diverso sarebbe se Walter avesse pubblicizzato un encoder particolare o un modello di microcontroller particolare ... che lui non vende e quindi dalla cui cosa non ne ricava guadagno ...

Lo so che a volte il limite è molto stretto, anche perchè ci sono casi meno plateali, che richiedono tempo e pazienza per cercare a chi è riconducibile il sito e chi è l'utente che si cela dietro al nickname ... e qualcosa può passare inosservato, vuoi per tempo, stanchezza a vedere centinaia di post al giorno ... e difatti è gradita la segnalazione di utenti che indichino che il tal utente suggerisce sempre la tal marca, o altro.

D'altro canto PLCForum è aperta alle aziende che vogliano far conoscere e supportare i loro prodotti nel forum aziende: in tal caso l'utente è autorizzato a pubblicare pubblicità di prodotti che commercializza, e nel proprio nickname è presente l'azienda che rappresenta, in modo che sia chiara e netta la differenza.

Ciao

Link al commento
Condividi su altri siti

ci sono nomi di ditte che son sconosciute

eppure pubblicate , italiane ed estere .

Non ho mai fatto pubblicita` occulta , era solo un link utile come altri mille che esistono

sul forum

Questa e` la ricerca e sviluppo nel ns paese

Mi fate troppo ridere

:lol::lol::lol:

Link al commento
Condividi su altri siti

siete troppo forti

dovreste promuovere le iniziative dei giovani italiani

altrimenti la ns economia tra non molto sara` un disastro

Comunque per vs. conoscenza , le mie fonti di guadagno non derivano

da queste schede , ma nel programmare reti di plc s7-400 , essere responsabile di automazione con collaboratori di diversi paesi , essere responsabile di hmi , strumenti ect , per una grossa multinazionale

ed in diverse parti del mondo .

Era solo un link interessante ed utile per chi sviluppa e ricerca

B)

Modificato: da walterword
Link al commento
Condividi su altri siti

  • 3 weeks later...

ciao Walter!!

ti sei rifatto vivo vedo... :)

scrivo solo per correggere una tua affermazione....l'economia e' gia' un disastro....

:lol:

ciao a tutti...

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...