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 17:22
Ho la licenza
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 17:24
Copincollo dalla mia directory dei source in linguaggio C:

if ((sv==1 && sp==0 && iv==0)||(iv==0 && ip==1 && sv==0)) pas++;
if ((sv==0 && sp==1 && iv==1)||(iv==1 && ip==0 && sv==1)) pas++;
if ((iv==1 && ip==0 && sv==0)||(sv==0 && sp==1 && iv==0)) pas--;
if ((iv==0 && ip==1 && sv==1)||(sv==1 && sp==0 && iv==1)) pas--;

i due segnali dall'encoder sono s (superiore) e i (inferiore)
v = valore attuale, p = valore precedente

pas è il nunero dei passi che viene incrementato o decrementato
Forse si può fare meglio ma funziona.



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





postato il:
10.09.2019, alle ore 17:26
L errore che mi fa é che mi conta come gli pare...Non ho usato nessun timer e vorrei non usarlo perché già lo uso per cambiare i tempi di un onda quadra. In pratica genero un segnale in onda quadra da 1 hz a 1,3khz con 85 step e ogni step aumenta in modo non lineare.con due semplici pulsanti funziona ma vorrei sostituirli proprio con un encoder rotativo.
fabio1977





postato il:
10.09.2019, alle ore 17:37
Pippodue non conosco il linguaggio c ma provo a intuire...mi sembra:
Se sv==1 e sp==0 e iv==0 rileggi lo stato logico di iv==0 ip==1 sv==0 allora aumenta la variabile...giusto?
if ((s
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:
10.09.2019, alle ore 17:46
fabio1977:
L errore che mi fa é che mi conta come gli pare...Non ho usato nessun timer e vorrei non usarlo


Hai messo un filtro antidisturbo? meglio HW + SW.
Senza interrupt e senza filtro conta in genere come gli pare.
Ho provato dei Burns ma hanno la stessa sensibilità ai disturbi dei cinesazzi su ebay.


fabio1977





postato il:
10.09.2019, alle ore 17:58
Due bei condensatori da 100 nf sul canale A e B
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 17:58
Ovviamente ho dimenticato di aggiungere la impostazione dei valori precedenti
Sp=sv; ip=iv;
Sv e iv potrebbero essere degli alias che rappresentano direttamente i digital
l input



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





postato il:
10.09.2019, alle ore 18:01
Per 'conta come gli pare 'intendevo dire che aumenta i diminuisce la variabile a suo piacimento pur girando l encoder sempre nello stesso verso e non lo dovrebbe fare....o aumenta o diminuisce
fabio1977





postato il:
10.09.2019, alle ore 18:03
Ma due righe di programma in linguaggio mikrobasic non si puo proprio scrivere?almeno cerco di capirlo..
fabio1977





postato il:
10.09.2019, alle ore 18:06
I due ingressi collegati all encoder sono la porta c4 e c5 del pic18f255
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