Forum: Mikrocontroller und Digitale Elektronik Encoder Geschwindigkeit mit einem Attiny 85 auslesen


von Sven T. (theoretiker87)


Lesenswert?

Hallo,

Kann mir jemand Tipps geben zu einem Programm, mit dem ich mit einem 
ATMEL ATTINY 85 einen Encoder auslesen kann. Habe gelesen das dies mit 
einer
Quadrature und Interrupts funktioniert.

Könnte mir jemand mit einem Ansatz für ein Programm weiterhelfen.

Grüße

Theoretiker87

von m.n. (Gast)


Lesenswert?

Ein ATtiny25 reicht dafür, den absoluten Wert zu erfassen: 
http://mino-elektronik.de/mt12_iic/mt12_iic.htm 2.Schaltung
Die Geschwindigkeit kann aus der Änderung/Zeit ermittelt werden, wobei 
Du zum notwendigen Meßbereich keine Angaben gemacht hast.

von MaWin (Gast)


Lesenswert?

Sven T. schrieb:
> Könnte mir jemand mit einem Ansatz für ein Programm weiterhelfen

Regelmässiger Timerinterrupt und ein paar Befehle, in Assembler oder C.

Ein Attiny85 könnte bis 2 Mio Striche pro Sekunde einlesen.

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29

von georg (Gast)


Lesenswert?

Sven T. schrieb:
> mit dem ich mit einem
> ATMEL ATTINY 85 einen Encoder auslesen kann. Habe gelesen das dies mit
> einer
> Quadrature und Interrupts funktioniert.

Kommt drauf an was du wirklich willst - wenn du nur die Geschwindigkeit 
brauchst, wie im Titel angegeben, brauchst du nur eine Frequenzmessung 
an einem Kanal.

Georg

von Martin B. (ratazong)


Lesenswert?

Wenn Du einen Vierflankendetektor brauchst:

int drehencodertask(int A,int B)
{
static int enc_last=0,enc_delta=0;
    char i = 0;

    if (A) i = 1;
    if (B) i ^= 3;
    i -= enc_last;
    if (i & 1)
    {
        enc_last += i;
        enc_delta += (i & 2) - 1;
    }
    return enc_delta;
}


Das im Timerinterrupt aufrufen. encdelta enthält dann den Zählerwert. 
input A,B musst Du eventuell invertieren, je nachdem, was dein encoder 
ausgibt

von Falk B. (falk)


Lesenswert?

@MaWin (Gast)

>Ein Attiny85 könnte bis 2 Mio Striche pro Sekunde einlesen.

Jaja, man muss es immer übertreiben.

>http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29

Jaja, die lieben Fragmente und Prinzipabläufe. Dumm nur, daß dort nix 
wirklich Komplettes steht.

Dann schon eher so, ist immer noch sehr schnell für eine Softwarelösung.

Beitrag "Re: Versetzte Rechtecksignale auswerten, kein drehgeber"

von Uwe S. (de0508)


Angehängte Dateien:

Lesenswert?

Hallo Seven,

da Du keine Programmiersprache angegeben hast, ist für Dich auch evtl. 
LunaAVR mit dem RotaryEncodier.interface und einem TimerN (1kHz - 3Khz) 
interessant.

https://avr.myluna.de/doku.php?id=de:libraries
https://forum.myluna.de/

Die Implementierung RotaryEncodier.interface basiert auf Peter 
Danneggers Implementierung für einen Drehencoder.

Anbei ein komplettes Beispiel mit 1kHz Abtastfrequenz.

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

Uwe S. schrieb:
> da Du keine Programmiersprache angegeben hast, ist für Dich auch evtl.
> LunaAVR

Meine Güte, wenn einer keine Programmiersprache angegeben hat, 
programmiert er in C oder frickelt allenfalls noch in Assembler.

: Bearbeitet durch User
von Sven T. (theoretiker87)


Lesenswert?

Hallo,
ich verwende ATMEL Studio.


Grüße

von M. K. (sylaina)


Lesenswert?

Sven T. schrieb:
> Hallo,
> ich verwende ATMEL Studio.
>
>
> Grüße

Da kann man auch ASM oder C oder C++ verwenden. Etwas mehr angaben wären 
schon gut.

Was genau willst du machen?
Was genau hast du schon gemacht?
Was genau hat bisher geklappt (und wie)?
Was genau hat bisher nicht geklappt?

Diese vier Fragen solltest du schon mal beantworten können, dann fällt 
es uns auch leichter, dir zu helfen. Das Problem bei Encodern ist, dass 
es so viele davon gibt. Eine interessante Frage wäre auch: Weist du was 
ein Quadratursignal ist? Wenn wir, neben den obigen Fragen, auch noch 
deinen Wissensstand kennen, hilft dies bei Antworten noch besser.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.