Pagina 1 di 1

difficoltà nella lettura di un encoder

MessaggioInviato: 8 apr 2018, 19:25
da luchinho
Io ho un encoder con due canali A e B e devo calcolare il tempo tra un passo e il successivo (se va in senso orario cioè durante il fronte di salita del canae A il valore del canae B deve essere lo stesso del canale A cioè HIGH) e in questo caso ci calcolo il deltatempo, nel caso in cui il verso sia antiorario entra in un sottoprogramma che blocchi l'interrupt e aspetti un tempo k qualsiasi.

Attualmente ho scritto il programma che scrive il tempo tra un passo e l'altro nella seriale e scrive errore nel caso vada in senso antiorario MA questo non accade e sembra che scrive valori errati.

Codice: Seleziona tutto
volatile int valoreB = 0;
volatile int i =0, j=0;
volatile int k=0;

unsigned long inizio_A = 0;
unsigned long fine_A = 0;
unsigned long diff_A = 0;

void setup() {
pinMode(2, INPUT);
pinMode(4,INPUT);
Serial.begin(9600);

attachInterrupt(digitalPinToInterrupt(2), fronte, RISING);
}

void loop() {
if(k==0) {

if(j < i){
  fine_A = inizio_A;
  inizio_A = micros();
  diff_A = inizio_A - fine_A;
  j = i;
  Serial.print(diff_A/100000);
  Serial.print (" ");
  Serial.println(i);
}
if(k==1){
  Serial.print ("erroreeeeeeeeeeeeeeeeeeee    ");
  Serial.println (i);
  inizio_A = 0;
  fine_A = 0;
}
}
}
void fronte(){
  valoreB= digitalRead(4);
if(valoreB==HIGH){
   
    i ++;
    k = 0;
    }
   if(valoreB==LOW){
   
    k=1;
   }

  }


Chiedo aiuto

Re: difficoltà nella lettura di un encoder

MessaggioInviato: 8 apr 2018, 20:09
da xyz
Quel codice è molto confuso, incompleto e si capisce poco.

Per leggere un rotary encoder non serve conoscere il tempo basta una xor:

http://www.rocketnumbernine.com/2010/03 ... ry-encoder

Re: difficoltà nella lettura di un encoder

MessaggioInviato: 8 apr 2018, 21:54
da DarioDT
Ma è un encoder di un motore?
Dario

Re: difficoltà nella lettura di un encoder

MessaggioInviato: 9 apr 2018, 21:55
da luchinho
xyz ha scritto:Quel codice è molto confuso, incompleto e si capisce poco.

Come posso migliorarlo ?

DarioDT ha scritto:Ma è un encoder di un motore?
Dario

Era utilizzato per un motore ma l'ho tolto per adattarlo un utilizzo analogo. Ma perché è rilevante se fosse stato per altro scopo?

Re: difficoltà nella lettura di un encoder

MessaggioInviato: 10 apr 2018, 10:50
da xyz
luchinho ha scritto:Come posso migliorarlo ?

Il link precedente contiene un codice efficiente per leggere questi tipi di encoder con 2 uscite in quadratura. Se cerchi esistono altre spiegazioni con codice, ad esempio:

https://playground.arduino.cc/Main/RotaryEncoders
http://andrewjkramer.net/motor-encoders-arduino

Re: difficoltà nella lettura di un encoder

MessaggioInviato: 10 apr 2018, 11:25
da SandroCalligaro
DarioDT ha scritto:Ma è un encoder di un motore?
Dario

Era utilizzato per un motore ma l'ho tolto per adattarlo un utilizzo analogo. Ma perché è rilevante se fosse stato per altro scopo?
E' importante saperlo, per capire qual è la frequenza massima degli impulsi e la precisione che ti occorre.
Normalmente, nel controllo motore si utilizzano periferiche dedicate al conteggio veloce degli impulsi, perché eseguire l'operazione in software non è efficiente e, nella maggior parte dei casi, nemmeno fattibile.

Re: difficoltà nella lettura di un encoder

MessaggioInviato: 12 apr 2018, 21:31
da luchinho
SandroCalligaro ha scritto:E' importante saperlo, per capire qual è la frequenza massima degli impulsi e la precisione che ti occorre.
Normalmente, nel controllo motore si utilizzano periferiche dedicate al conteggio veloce degli impulsi, perché eseguire l'operazione in software non è efficiente e, nella maggior parte dei casi, nemmeno fattibile.


Ho capito, infatti io devo utilizzare questo encoder da 1080 passi per giro per basse velocità (5 m/h) molto lente perciò non ci dovrebbero essere problemi.

Ma ho appena provato a capire se il conteggio è giusto con un semplice codice che scriveva nella seriale il numero di passi e se giravo l'albero in modo veloce ne leggeva pochissimi tipo 200 passi invece se lo giravo piano ne leggeva in più circa 1800

Re: difficoltà nella lettura di un encoder

MessaggioInviato: 12 apr 2018, 21:32
da luchinho

Un po' un casino, non è proprio immediato da capire