Forum: Mikrocontroller und Digitale Elektronik Richtungsanzeige aus Drehimpulsen


von Klaus F. (fk77)


Lesenswert?

Hallo Ihr schlauen Köpfe,

ich habe ein Problem das ich nicht mal richtig benennen kann....
Dann erkläre ich mal was ich vorliegend habe und was mir durch den Kopf 
geht.

Ich habe einen Drehknopf mit einem Anschlus X und dieser schaltet 
rechtsdrehend auf die Anschlüsse A dann B dann C (in dieser 
Reihenfolge).

Solange man rechts rum dreht kontaktiert X auf ABC, ABC, ABC usw...
Solange man links rum dreht dann kontaktiert X auf CBA, CBA, CBA usw.

Läßt man den Drehknopf los dann bleibt X eben auf einem von ABC stehen.
Ich denke deswegen gibt es 3 Ausgänge (ABC) damit eine Richtung zu 
erkennen ist.

Ich müßte das ganze nun wandeln auf ein "Links" oder "Rechts" Signal.
Dreht man rechts rum dann sollen Rechts-Impulse raus kommen, eine LED 
"rechts" dran die dann aufblinkt.
Dreht man links rum dann sollen Links-Impulse raus kommen, eine LED 
"links" dran die dann aufblinkt.
Bleibt X auf einem von ABC stehen (man dreht nicht mehr) sind die LED 
"links und rechts" aus.


Wie nennt man so etwas und kann man sowas kaufen?
Hat jemand eine Idee?


Danke, Gruß
Klaus

von Jörg R. (solar77)


Lesenswert?

Stichwort: Encoder

von Klaus F. (fk77)


Lesenswert?

Der Encoder ist ja der besagte Drehknopf mit den 4 Anschlüssen.

von H.Joachim S. (crazyhorse)


Lesenswert?

Klaus F. schrieb:
> Wie nennt man so etwas

ATTiny25
Es gibt aber sicher auch ein paar fertige ICs.

von MaWin (Gast)


Lesenswert?

Klaus F. schrieb:
> Ich denke deswegen gibt es 3 Ausgänge (ABC) damit eine Richtung zu
> erkennen ist.

Eigentlich reichen 2.

Klaus F. schrieb:
> Wie nennt man so etwas

Drehencoder.

> und kann man sowas kaufen?

Für 3 Kanäle die auch noch im genau selben Moment:

Kanal a geht von 1 auf 0 exakt in dem Moment wo Kanal b von 0 auf 1 
geht, denn angeblich gibt es ja keinen Zustand "alle aus" oder "mehrere 
an".

umschalten wohl nicht.

Technisch ist das aber einfach zu realisieren. Ein paar FlipFlops.

von Klaus F. (fk77)


Lesenswert?

Was fertiges wäre mir am liebsten.

von Klaus F. (fk77)


Lesenswert?

Die Dinger mit 3 Anschlüssen kenn ich.
Hab auch welche die eine Richtung immer auf A Impulse tasten und die 
andere Richtung Impulse auf B Tasten.

Ich kann aber den verbauten Encoder nicht tauschen, der hat ein 
gefrästes Gehäuse und das passt nichts anderes rein.

Wie könnte ich aus -> ABC ABC ABC einen Impuls erzeugen
und bei <- CBA CBA CBA einen 2. Impuls erzeugen

Könnte ja auch für eine Richtung ein positiver Impuls sein und für die 
andere Richtung ein negativer Impuls sein, wenn das einfacher wäre.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Klaus F. schrieb:
> Wie nennt man so etwas und kann man sowas kaufen?
> Hat jemand eine Idee?

 Statemachine.
 Ein ATTINY ist mehr als ausreichend.

von foobar (Gast)


Lesenswert?

Ganz so trivial ist das nicht.  Ein fertiger Baustein dafür ist mir 
nicht bekannt.

Wie ist denn der Übergang von einem Kontakt zum nächsten, brückend oder 
unterbrechend?  Also "nur A, A und B, nur B" oder "nur A, offen, nur B"?

Und wie lang soll die "Blinkdauer" sein?  Beim brückenden Betrieb könnte 
man die Übergangszeit nehmen - reicht das?  Ansonsten brauchst du noch 
ein Zeitglied.

Brauchst du bei jedem Wechsel einen Impuls oder reicht es, wenn z.B. nur 
bei A einer käme?

Beitrag #6496490 wurde von einem Moderator gelöscht.
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Klaus F. schrieb:
> Ich denke deswegen gibt es 3 Ausgänge (ABC) damit eine Richtung zu
> erkennen ist.
Das können andere aber auch mit 2 Ausgängen...

> Solange man rechts rum dreht kontaktiert X auf ABC, ABC, ABC usw...
Wurde schon gefragt, aber ich machs mal mit Bild.
Mit Überlappung?
Also etwa so:
1
rechts
2
   A   XXXX     XXXX     XXXX     XXXX     XXXX     X   
3
   B      XXXX     XXXX     XXXX     XXXX     XXXX   
4
   C   X     XXXX     XXXX     XXXX     XXXX     XXXX 
5
links
6
   A      XXXX     XXXX     XXXX     XXXX     XXXX     X   
7
   B   XXXX     XXXX     XXXX     XXXX     XXXX     XXXX
8
   C   X     XXXX     XXXX     XXXX     XXXX     XXXX

Oder ohne Überlappung, also sogar mit "alle offen" dazwischen?
Also etwa so:
1
rechts
2
   A   XXX         XXX         XXX         XXX         XXX
3
   B       XXX         XXX         XXX         XXX    
4
   C           XXX         XXX         XXX         XXX
5
links
6
   A           XXX         XXX         XXX         XXX         
7
   B       XXX         XXX         XXX         XXX    
8
   C   XXX         XXX         XXX         XXX         XXX

foobar schrieb:
> Brauchst du bei jedem Wechsel einen Impuls oder reicht es, wenn z.B. nur
> bei A einer käme?
Also etwa so:
1
       rechts            still        links
2
   A   XXXX     XXXX     XXXXXXXXXXXXXX     XXXX     XXXX     X
3
   B      XXXX     XXXX                  XXXX     XXXX     XXXX   
4
   C   X     XXXX     XXXX            XXXX     XXXX     XXXX  
5
LEDr   ######   ######   ######            
6
LEDl                                        ######   ######   ######
@Klaus F. (fk77): du könntest doch einfach selber mal so ein 
Timing/Ablauf-Diagramm malen, das zeigt, was wann wie wo passiert oder 
passieren soll.

Klaus F. schrieb:
> kann man sowas kaufen?
Weil schon der Geber sehr exotisch ist, gibt es kaum eine Lösung "von 
der Stange" für eine noch exotischere Aufgabe für diesen Geber.

Beitrag #6496598 wurde von einem Moderator gelöscht.
Beitrag #6496762 wurde von einem Moderator gelöscht.
von Peter D. (peda)


Lesenswert?

Klaus F. schrieb:
> Ich müßte das ganze nun wandeln auf ein "Links" oder "Rechts" Signal.

Wieviel Signale, d.h. ein Puls je ABC oder je einer für A, B und C?

von Axel S. (a-za-z0-9)


Lesenswert?

Wenn man das auswerten will, dann kann man exakt den gleichen Ansatz wie 
für einen Drehgeber verwenden. Eine Statemaschine, die sich den 
letzten Zustand merkt und beim Übergang auf den jeweiligen 
Nachbarzustand eine Aktion auslöst.

Der Unterschied ist die Anzahl der Zustände. Die weitverbreiteten 
Encoder mit 2-Bit Graycode haben 4 Zustände. Dieser Encoder hat 6 
Zustände, wobei 3 von denen vermutlich nur transient sind. Hat das Ding 
eigentlich eine Rastung? Dann wohl jeweils mittig auf A, B und C.

Die Auswertung macht man am einfachsten sicherlich mit einem µC. Aber 
die Statemachine kann man natürlich genauso in ein GAL brennen.

Beitrag #6496897 wurde von einem Moderator gelöscht.
von Falk B. (falk)


Lesenswert?

Axel S. schrieb:
> Dieser Encoder hat 6
> Zustände, wobei 3 von denen vermutlich nur transient sind.

Sicher? Oder eher ein Verständnis/Mess/Kommunikationsproblem des OP?

von Falk B. (falk)


Lesenswert?

Axel S. schrieb:
> Die Auswertung macht man am einfachsten sicherlich mit einem µC. Aber
> die Statemachine kann man natürlich genauso in ein GAL brennen.

Ich bin für Lochstreifen, die gute, alte Drehorgel läßt grüßen!

von Falk B. (falk)


Lesenswert?

Klaus F. schrieb:
> Ich habe einen Drehknopf mit einem Anschlus X und dieser schaltet
> rechtsdrehend auf die Anschlüsse A dann B dann C (in dieser
> Reihenfolge).
>
> Solange man rechts rum dreht kontaktiert X auf ABC, ABC, ABC usw...
> Solange man links rum dreht dann kontaktiert X auf CBA, CBA, CBA usw.

Zeig mal ein Bild davon. Ich wette, daß ist ein 08/15 Drehgeber, der 
abwechseln A und B gegen C (GND) schaltet.

Beitrag #6496921 wurde von einem Moderator gelöscht.
Beitrag #6496929 wurde von einem Moderator gelöscht.
von Klaus F. (fk77)


Lesenswert?

Bitte bitte nicht streiten wegen so nem Thema.
Und Sorry das ich nicht gleich immer Antworten kann, ich arbeite 
nebenbei noch ;-)

Um Mal das eine oder andere aufzugreifen.

Der Encoder, die drehbare Achse und die Montageplatte mit den Gewinden 
ist gefräst....
Rückseitig ist das ganze Ding komplett vergossen, warum macht man so 
einen Mist, naja.
Dann steckt das Teil noch in einer Hohlwelle.
Es geht ein Kabel raus und dieses hat 4 Adern und ein Sticker ist 
darauf.
Da steht:
C=blk
O1=rd
O2=bl
O3=ye
O1-O3: max. 10mA
Ich denke C steht für Common und O1... für Out1 ....
und die Drähte haben auch die Farben wie beschrieben, 
Schwarz,rot,blau,gelb

Dreh ich die Hohlwelle langsam dann ist eine Rasterung zu spüren.

Im Stillstand schaltet C z.B. auf O1
Dreh ich weiter öffnet C von O1 und bei der nächsten Rastung
schaltet C auf O2 durch, also sind O1 und O2 nie gleichzeitig mit C 
verbunden.
Dreh ich zur nächten Rastung weiter öffnet C von O2 und schaltet C auf 
O3 durch.
Auch der Übergang von O2 auf O3 hat nie gleichzeitig kontakt mit C

Die andere Richtung ist genau so nur das eben der Kontakt von C nach O3 
dann O2 und dann O1 läuft.

Ich habe zum Test mal C mit +5V belegt.
An O1 eine LED mit Widerstand
An O2 eine LED mit Widerstand
An O3 eine LED mit Widerstand
Alle LEDs nach dem Widerstand auf GND.

Bei Stillstand leuchtet eine LED konstand, sagen wir mal die O1.
Dreh ich in eine Richtung dann ist es wie ein Lauflicht.
Es ist immer nur eine LED an und zu keiner Zeit 2 oder so.
Wenn ich die Welle so extrem langsam und super vorsichtig drehe das ich
zwischen 2 Rasterungen komme dann sind die LED alle aus aber das 
passiert nie das die Welle zwischen 2 Rasterungen stehen bleibt.
Dreh ich die Welle in die andere Richtung dann "laufen" die LEDs auch in 
die andere Richtung.

von Klaus F. (fk77)


Lesenswert?

MaWin schrieb im Beitrag #6496921:
> ob man von A->B,
> B->C, C->A je einen Impuls liefern muss oder bloss einen pro ABC Gruppe,

Überlappung gibts keine.

A->B  1 Impuls rechts
B->C  1 Impuls rechts
C->A  1 Impuls rechts

A->C  1 Impuls links
C->B  1 Impuls links
B->A  1 Impuls links

Hoffe das hilft?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Klaus F. schrieb:
> Bitte bitte nicht streiten wegen so nem Thema.
Ich habe mal den persönlichen Kleinhickhack entfernt. Die Diskutanten 
mögen doch bitte per email um das Thema "µC vs. Flipflop" streiten.

> Wenn ich die Welle so extrem langsam und super vorsichtig drehe das ich
> zwischen 2 Rasterungen komme dann sind die LED alle aus
Also wie mein Diagramm "ohne Überlappung".

Muss jetzt bei jeder "Rastung" je nach Richtung eine der beiden neuen 
Richtungs-LEDs blinken?


EDIT:
Klaus F. schrieb:
> Hoffe das hilft?
Ja, jetzt ist alles klar. Ich würde einen µC nehmen. Das ist das absolut 
Simpelste hier. Besonders, wenn der Geber auch noch mechanisch ist und 
entprellt werden muss.

: Bearbeitet durch Moderator
von Axel S. (a-za-z0-9)


Lesenswert?

Falk B. schrieb:
> Axel S. schrieb:
>> Dieser Encoder hat 6
>> Zustände, wobei 3 von denen vermutlich nur transient sind.
>
> Sicher?

Es sind 6 Zustände, wenn sich die Phasensignale überlappen. Das würde 
ich als wahrscheinlich ansehen. Wenn sie sich strikt nicht überlappen, 
sind es 4  Eingangszustände. Der 4. Zustand "offen" tritt zwar an 3 
Stellen in der Sequenz auf, ist aber nicht unterscheidbar. Insofern 
bleiben intern nur 3 Zustände übrig und der 4. ist ein immer erlaubter 
Übergang ohne Wert für die Richtungserkennung.

Edit: ist wohl kein Kommunikationsproblem. Und auch nicht überlappend.

: Bearbeitet durch User
Beitrag #6497043 wurde vom Autor gelöscht.
von Klaus F. (fk77)


Lesenswert?

Bei jeder erfolgten Rastung die Ausgabe eines Impulses für die jeweilige 
Richtung wäre schon toll...
Da wäre die Auflösung am besten.

Ich kenn sowas umgekehrt, ein Schieberegister.
Jeder Eingans-Impuls schaltet einen Ausgang nach dem anderen durch.

Das ganze aber anders rum?

Eingänge die nacheinander ein Input liefern und je nach Reihenfolge der 
Eingangs-Inputs die Ausgabe eines Impulses für links bzw. rechts

Beitrag #6497068 wurde von einem Moderator gelöscht.
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Klaus F. schrieb:
> Hoffe das hilft?

Wie stehst du mit programmieren?
Kannst du irgendwelche Programmsprachen, hast du überhaupt die
Möglichkeit einen uC zu programmieren (Programmer)?

: Bearbeitet durch User
Beitrag #6497093 wurde vom Autor gelöscht.
von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Anbei mal für den ATtiny13.
Der 1. Switch testet auf gültige Zustände, der 2. auf die möglichen 
Übergänge.

von Klaus F. (fk77)


Lesenswert?

Asche auf mein Haupt.

Leider keine Erfahrung mit µC.
Hab nur mal auf nen ESP8266 was drauf gespielt und das ist schon wieder 
6 Jahre her...

Bitte nicht schlagen!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Klaus F. schrieb:
> Bitte nicht schlagen!
Hast du ein EPROM? Und einen Brenner dafür?

von Falk B. (falk)


Lesenswert?

Klaus F. schrieb:
> Leider keine Erfahrung mit µC.
> Hab nur mal auf nen ESP8266 was drauf gespielt und das ist schon wieder
> 6 Jahre her...
>
> Bitte nicht schlagen!

Das ist kein Problem, man muss nicht alles können. Wenn man nett 
nachfragt, findet sich schon Einer, der das programmiert bzw. auch 
gleich den IC brennt.

von Falk B. (falk)


Lesenswert?

Lothar M. schrieb:
> Klaus F. schrieb:
>> Bitte nicht schlagen!
> Hast du ein EPROM? Und einen Brenner dafür?

Ohje!!!! Hier landen nicht nur Nerds!

Beitrag #6497192 wurde von einem Moderator gelöscht.
Beitrag #6497208 wurde vom Autor gelöscht.
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Klaus F. schrieb:
> Bitte nicht schlagen!

Nö, warum denn auch.
Frage war nur deswegen, ob es mit einem TINY geht (Programmer ist
Voraussetzung) oder ob du es mit einem NANO bzw. ESP8266 realisieren
kannst (programmieren über USB ohne weitere HW, am besten mit ARDUINO).
Wenn du aber keine programmierkenntnisse hast, bist du auf fertiges
.HEX File und AVRDUDE angewiesen.
Dieses .HEX File wiederum muss jemand für dich erstellen.
Und da fangen deine Probleme an...

von Wolfgang (Gast)


Lesenswert?

Marc V. schrieb:
> Kannst du irgendwelche Programmsprachen, hast du überhaupt die
> Möglichkeit einen uC zu programmieren (Programmer)?

Heutzutage kann man für unter 3 € fertig µC-Boards mit USB-Anschluss und 
Bootloader kaufen. Diese µCs können sich selbst programmieren.

Ein nicht vorhandener Programmer ist also kein Hindernis.

von Georg (Gast)


Lesenswert?

Lothar M. schrieb im Beitrag #6497208:
> BTW: auch diesen und den zitierten Post werde ich wieder löschen

Und natürlich auch nicht die früher übliche Benachrichtigung senden. So 
langsam geht euch jede Anständigkeit verloren, nur noch reine Willkür.

Georg

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Georg schrieb:
> Und natürlich auch nicht die früher übliche Benachrichtigung senden.
Unangemeldete Gäste können eben keine PN empfangen. Und dann war da noch 
die Sache mit der DSGVO...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Lothar M. schrieb:
> Georg schrieb:
>> Und natürlich auch nicht die früher übliche Benachrichtigung senden.
> Unangemeldete Gäste können eben keine PN empfangen.

Eben, ich kann die ordentliche Benachrichtigung nur bestätigen.
Ich kriege diese regelmässig und pünktlich, wenn es mal zufällig einen
Tag ausbleibt, mache ich mir schon Sorgen um die Gesundheit der
Moderatoren - womöglich COVID zum Opfer gefallen? (Gott bewahre!).

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Lothar M. schrieb:
> Unangemeldete Gäste können eben keine PN empfangen

Wenn das nicht einfach nur glatt gelogen ist, dann habt ihr das geändert 
- ich habe jahrelang die Benachrichtigungen empfangen, trotz Gast. Egal 
wie, man kann sich hier noch so sachlich beteiligen, dem Terror der Mods 
entgeht man nicht. Bei der überwiegenden Anzahl der zahlreichen 
Löschungen habe ich mir nicht das geringste zuschulden kommen lassen, da 
wurde ich einfach mitgelöscht weil man schon mal dabei war. An 
anständigen Teilnehmern besteht offensichtlich kein Interesse.

Georg

von Peter D. (peda)


Lesenswert?

Noch eine Anmerkung zu dem Programm aus:

Beitrag "Re: Richtungsanzeige aus Drehimpulsen"

Wird die Pulsdauer zu lang gewählt oder zu schnell gedreht, können Pulse 
verloren gehen. Auch ist die dann die Pause zwischen 2 Pulsen nur 
minimal.
Man müßte also erstmal die minimale Puls- und Pausendauer angeben.

Werden lange Zeiten benötigt, ist das aber auch kein Beinbruch. Man 
trennt dann eben die Auswertung und Pulserzeugung über eine Zählvariable 
voneinander. Beim schnellen Drehen läuft dann die Pulserzeugung nach, 
bis die Variable wieder 0 ist. Ein Zählumfang von +/-32767 (int) sollte 
reichen.
Nur mit Logik-ICs wäre das schon richtig aufwendig.

von Falk B. (falk)


Lesenswert?

Beitrag "Re: Drehencoder statt Tasten"
Beitrag "Re: Drehencoder statt Tasten"

Die Logik ist zwar etwas anders, kann man aber relativ einfach anpassen.

In der Software sind noch ein paar Bugs, die ich erst ein paar Tage 
später im Testaufbau rausgefischt habe ;-)

: Bearbeitet durch User
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.