home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


Encoder con pic18f252
     
Autore Messaggio opzioni
fabio1977





postato il:
10.09.2019, alle ore 20:49
Quindi uso il timer 0 per leggere l ingressi A e B dell encoder?
caccamo2





postato il:
10.09.2019, alle ore 21:03
no quindi usi l'interrupt per leggere l'encoder. Se vuoi decodificare via hardware o usi un micro con decoder quadratura o te ne fai uno con flip flop e porte logiche..


every project is unique
pippodue




una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
10.09.2019, alle ore 21:14
Vuoi dire usi l'interrupt del timer o gli interrupt del tipo "change notification" ?
(l'OP non conosce il C come io non conosco il pic)



anche i grandi uomini, come gli uomini comuni, possono talvolta cadere in errore (Voltaire)
fabio1977





postato il:
10.09.2019, alle ore 21:16
http://www.grix.it/viewer.php?page=10667
Questo dovrebbe andare bene
rcc.roberto



[pagine pubblicate]

postato il:
10.09.2019, alle ore 21:25
Il codice bisogna che lo scrivi tu! Poi se non funziona lo pubblichi che qualcuno lo correggerà.

Come ti ha detto caccamo, bisogna che usi gli interrupt, altrimenti salti delle letture e ti ritrovi con situazioni sbagliate.

Per quanto riguarda i rimbalzi, li puoi eliminare via software, dopo che hai fatto la lettura, la ripeti immediatamente altre due o tre volte, se è sempre uguale OK, altrimenti sono rimbalzi.

Tieni conto anche della velocità del programma, se hai bisogno di velocità devi scrivere in Assembler, altrimenti, coi compilatori rallenti molto.

Prima di scrivere il codice, bisogna che ti costruisci una tabellina delle situazioni.

Esempio:

Parti dalla situazione:

A=0 B=0

Alla successiva lettura potrai avere o

A=1 B=0 oppure A=0 B=1

prendiamo il primo, assegnandogli rotazione CW

Alla lettura successiva potrai avere

A=1 B=1 oppure A=0 B=0

nel primo caso sarà ancora rotazione CW, nel secondo CCW

continuiamo col primo, successivamente potrà essere:

A=0 B=1 oppure A=1 B=0

e ancora nel primo caso sarà ancora rotazione CW, nel secondo CCW

E via così...
caccamo2





postato il:
11.09.2019, alle ore 09:29
pippodue:
Vuoi dire usi l'interrupt del timer o gli interrupt del tipo change notification?
(l'OP non conosce il C come io non conosco il pic)


La seconda che hai detto



every project is unique
pippodue




una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
11.09.2019, alle ore 10:15
A questo punto direi che le risposte non mancano, l'OP ha modo (anzi, modi) di procedere.


anche i grandi uomini, come gli uomini comuni, possono talvolta cadere in errore (Voltaire)
MB54




una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
11.09.2019, alle ore 11:58
pippodue:
...l'OP ha modo ...di procedere.



Scusa, ma chi è l' OP?
pippodue




una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
11.09.2019, alle ore 16:28
OP = original poster. Bah, per una volta che volevo essere alla moda...


anche i grandi uomini, come gli uomini comuni, possono talvolta cadere in errore (Voltaire)
picmicro675




una ogni 10 livelli una ogni 10 livelli


postato il:
12.09.2019, alle ore 02:26
fabio1977:
Rcc.Roberto Il problema é farlo capire al pic in quale direzione gira l encoder.

Ci possono essere diversi metodi. Quello più semplice dice che se sul fronte di salita di un ingresso l' altro è alto allora gira in un senso, se invece è basso sarà l' opposto.
Altro metodo di misurare gli impulsi con il timer1, con eventuale verifica che la rotazione sia corretta.
Come questo
http://www.grix.it/UserFiles/picmicro675/File/TransitFiles/t… ci sono differenze perché è scritto in Proton basic e per un 12F675, ma il concetto non cambia.

Oppure vedi le pagine pubblicate
http://www.grix.it/viewer.php?page=13018
http://www.grix.it/viewer.php?page=11577
http://www.grix.it/viewer.php?page=7842

Non devi mettere tanto di filtro, altrimenti non legge bene gli impulsi. Fai ben attenzione che usi i piedini con interfaccia a trigger di Schmitt. Come quella del Timer1 o l'inerrupt da esterno. Se hai assegnato a piedini senza il trigger allora ti conviene mettere degli squadratori come CD 40106.
Infine non è strettamente necessario utilizzare gli interrupts se sono conteggi di pochi Hertz. Altrimenti se devi leggere la posizione di un motore che gira a 3000 o 6000 giri, allora diventa imperativo mettere sotto interrupt, per non perdere il conteggio.
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 

 
 
indietro | homepage | torna su copyright © 2004/2019 GRIX.IT - La community dell'elettronica Amatoriale