Encoder ottico HEDS-5540 con Arduino Uno

Sezione dedicata all'Hardware con particolare riferimento all'elettronica digitale, analogica e di potenza. Interfacce, periferiche, bus seriali e paralleli...

Encoder ottico HEDS-5540 con Arduino Uno

Postby dani90 » 11 May 2016, 13:55

Ciao, premettendo che è da poco tempo che uso Arduino, volevo chiedere se mi potreste aiutare per il mio problema. Ho un motore "maxon DC motor 118742" da 9V collegato ad un encoder "Avago HEDS 5540#A02" con una risoluzione da 500 cpr, mediante il quale mi servirebbe sapere solo e soltanto il numero di giri che il motore effettua (non mi interessa controllare il motore impostando io il senso di rotazione o un preciso numero di giri). Utilizzo un Arduino Uno e girando tra i forum ho capito come effettuare i collegamenti, ma non sono riuscito a capire bene che programma scrivere. Chiarisco che non mi serve sapere ogni istante di tempo il numero di giri del motore, ma ogni secondo o ogni decina di secondi mi basterebbe.
Potreste darmi una mano nella stesura del codice su Arduino grazie? Perché come dicevo ho provato almeno una 30ina di codici diversi ma non sono riuscito a trovarne uno che funziona bene.
dani90
 
Posts: 4
Joined: 11 May 2016, 13:21

Re: Encoder ottico HEDS-5540 con Arduino Uno

Postby deluca » 16 May 2016, 07:42

Salve Dani90,
per contare il numero dei giri puoi utilizzare il segnale Index che è presente su quel tipo di encoder.
Poi aprire una finestra temporale programmando un timer del Atmega e conteggiare all'interno di quella finestra gli impulsi che ti arrivano dall'index.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Encoder ottico HEDS-5540 con Arduino Uno

Postby dani90 » 17 May 2016, 14:14

Ciao Deluca,
innanzitutto grazie della risposta. Io ho trovato in giro soluzioni utilizzando i canali A e B (o il singolo canale), ma con nessuna di queste ho ottenuto quello che volevo.
In merito al
Poi aprire una finestra temporale programmando un timer del Atmega e conteggiare all'interno di quella finestra gli impulsi che ti arrivano dall'index.

Puoi spiegarmi per favore cosa dovrei fare di preciso?
dani90
 
Posts: 4
Joined: 11 May 2016, 13:21

Re: Encoder ottico HEDS-5540 con Arduino Uno

Postby dani90 » 17 May 2016, 14:18

Il seguente codice potrebbe andare bene secondo lei:
Code: Select all

volatile unsigned long  count = 0;
unsigned long copyCount = 0;

unsigned long lastRead = 0;
unsigned long interval = 1000;//one second

void setup()
{
  Serial.begin(9600);
  Serial.println("start...");
 
  pinMode(2,INPUT_PULLUP);
  attachInterrupt(0, isrCount, RISING); //interrupt signal to pin 2
}

void loop()
{
  if (millis() - lastRead >= interval) //read interrupt count every second
  {
    lastRead  += interval;
    // disable interrupts,make copy of count,reenable interrupts
    noInterrupts();
    copyCount = count*60;
    count = 0;
    interrupts();
 
    Serial.println(copyCount);

  }
}

void isrCount()
{
  count++;
}


dani90
 
Posts: 4
Joined: 11 May 2016, 13:21


Return to Elettronica Analogica, Digitale e di Potenza

Who is online

Users browsing this forum: No registered users and 2 guests

cron