Jump to content

Recommended Posts

Geschrieben (bearbeitet)

Hello!

I recently procured an AMT103 rotary incremental encoder for a brushless motor.

The outputs of the encoder are the A, B, and X channels, as shown in this photo and the corresponding CMOS voltage square waveforms are presented in this photo. For my project, I use 2048 PPR.

I want to connect the outputs of the encoder on a Bricklet. What bricklet would you suggest for this application? I was thinking of the IO-4 Bricklet 2.0 as a choice. Would this work?

 

Thanks a lot!

bearbeitet von AMT103 Encoder - Bricklet
Geschrieben

I’m only getting an error when trying to view those photos, but I see no reason why the IO-4 Bricklet 2.0 shouldn’t be able to read a rotary encoder’s signals. The bricklet’s API has a function to read all four inputs at the same time, so you shouldn’t have a problem with signals changing while reading them.

  • 3 months later...
Geschrieben

@photron I am using the Industrial Counter Bricklet to read an AB Encoder and it works okayish but the position tends to drift over a longer time. I am not sure if too many pulses are registered or if some are skipped. I am using a linear encoder with a resolution of 0.005 mm (full AB period is 0.02 mm) and with speeds of max. 10 mm/s. So the max frequency is with 2 kHz well below the specified 4 Mhz. In my application I constantly drive back and forward with an amplitude of about 10 mm and I need the encoder to keep track of the location.

Could it be that the bouncing of the signal causes errors? I found the following solution to bouncing on wikipedia, sorry that it is in german:

"Wenn der Inkrementalgeber genau auf der Grenze einer Flanke steht, so können durch kleinste Erschütterungen oder andere Effekte (Tastenprellen, elektromagnetische Störungen) zusätzliche Impulse auftreten. Sogenannte Schritttabellen eliminieren Fehler durch Mehrfachimpulse an den Schaltzeitpunkten: Angenommen, B stehe auf 1 und A wechsele von 1 auf 0 und prelle dabei: Amem und Bmem sollen die gespeicherten Werte vor einer neuen Flanke sein. Beim ersten Wechsel von A auf 0 wird anschließend Amem = 0 und Bmem = 1 gespeichert. Wechselt jetzt A wieder auf 1 so wird kein Impuls gezählt, weil das Aktuelle B = Bmem ist. Solange sich B nicht verändert hat, dürfen Flanken bei A nicht mehr gezählt werden. Kurz gesagt: Die Logik setzt das Apriori-Wissen, dass nach einem Wechsel von A erst ein Wechsel von B kommen muss (und umgekehrt) um. Dies gilt auch bei der Drehrichtungsumkehr."

If something like that is already implemented than I suspect, that I need to upgrade to another more premium Encoder. I already changed from one with a 0.001 mm resolution to the 0.005 mm one and the drifting got better but has not completely vanished.

Geschrieben

There should be no drift(*). How did you connect the encoder and how did you configure the Bricklet?

(*): The only way you should be able to introduce drift is if the signal is not unambiguous anymore. For example if the high voltage is normally 24V, but if it starts to bounce back and force with high frequency the high voltage only goes up to 5V or so. In that case it can easily happen that the Bricklet starts to miss transitions.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...