Forum: Mikrocontroller und Digitale Elektronik Drehimpulsgeber-Signale auswerten


von El Greco (Gast)


Lesenswert?

ich habe ein kleines problem beim auswerten der signale eines
drehimpulsgebers (ich hoffe das heißt überhaupt so. es werden
jedenfalls 2 impulse abgegeben, abhängig von der drehrichtung kommt
entweder der eine oder der andere zuerst).
ein impuls hängt am INT0-pin eines atmega32, der 2. an einem anderen
pin (PD1).
in der interrupt routine frage ich einfach ab ob PD1 high oder low ist.
sofern ich das prinzip verstanden habe, sollte das eigentlich genügen um
die drehrichtung zu erkennen. tja, tut es aber nicht ganz :)
eine drehung in richtung 1 wird immer als solche "erkannt". richtung
2 hingegen wird nur manchmal als solche erkannt und das ist davon
abhängig wie schnell ich drehe. naja das problem scheint hier recht
klar zu sein. der 2. impuls lässt wohl machmal zu lange auf sich
warten.
hat jemand eine idee wie ich dieses problem umgehen kann ohne einen 2.
externen interrupt-pin zu verwenden?

danke im vorraus, mfg philipp

von crazy horse (Gast)


Lesenswert?

indem du ganz ohne Interrupts arbeitest. Gibt hier in der Codesammlung
ein sehr schönes Beispiel von Peter Danegger, funktioniert super.

von El Greco (Gast)


Lesenswert?

ah, sehr gut, danke

von Benedikt (Gast)


Lesenswert?

Es geht aber auch wunderbar mit Interrupts:

SIGNAL(SIG_INTERRUPT0)
{
  if (((INKREM1)&&(INKREM2))||((INKREM1==0)&&(INKREM2==0)))
    inkrement--;
  else
    inkrement++;
}

Der Interrupt wird bei beiden Flanken ausgelöst, INKREM1 und INKREM
zwei sind die Pins an dem der Inkrementalgeber angeschlossen ist.

Einzige Vorraussetzung damit es geht: Das Ding darf nicht prellen.

von ??? (Gast)


Lesenswert?

> Einzige Vorraussetzung damit es geht: Das Ding darf nicht prellen.
>

...geht also nur theoretisch...

von Benedikt (Gast)


Lesenswert?

>...geht also nur theoretisch...
Nö, einfach ein RC Glied zwischen Inkrementalgeber und uC und das ganze
läuft wunderbar. Das verwende ich schon seit Jahren in verschiedensten
Schaltungen ohne Probleme.
Je nachdem ob der Inkrementalgeber ein oder zwei Impulse pro Schritt
erzeugt, kann es sein, dass man den Interrupt auf ein oder zwei Flanken
stellen muss.

von Simon K. (simon) Benutzerseite


Lesenswert?

Ja, oder einfach Pollen, wie oben genannt und mehrfach bewährt. Da
braucht man noch nichtmal R und C... Also eigentlich effektiver.

von Simon K. (simon) Benutzerseite


Lesenswert?

Weiterhin ist die Wahl der Pins frei..

von SuperUser (Gast)


Lesenswert?

Hallo,

ich polle auch, habe aber trotzdem R&C. Einfach wegen ESD. So ein
Bedienelement fängt halt die meisten ESD Pulse ein, und ich brauche
normalerweise zuverlässige Schaltungen...

von johnny.m (Gast)


Lesenswert?

@SuperUser:
Was hat das denn mit ESD zu tun? Ich glaub, Du meinst eher EMV... Gegen
ESD machste mit nem RC mal gar nix.

von SuperUser (Gast)


Lesenswert?

Ein RC kann gegen beides (ESD/EMV) helfen. In der Beschaltung unten ist
der ESD Schutz höher.
-----
Bei der elektrostatischen Entladung wird eine gewisse Kapazität (je
nach Modell bzw. in der Realität je nach Umgebung) von ein paar
100pF@XkV über den Kontakt mit dem Device entladen.

Pin   __ 1k
  ---|____|---------  uC
               |
              ---  47nF
              ---
               |
  -------------------  MASSE

Der Mensch fasst jetzt mit z.B. 8kV geladen und einer Kapazität von
100pF und einem Innenwiderstand von 1.5kOhm an den Pin an. Der R wirkt
jetzt als Strombegrenzung für die Ausgleichströme und reduziert die
Anstiegszeiten. Der Kondensator teilt die Spannung gemaess 100pF/47nF
auf, also auf 1/470. Die verbleibende Spannung (17V) wird ohne Probleme
von den in den uC integrierten ESD Schutzstrukturen abgeleitet.

-> ESD Puls sorgt für einen Puls am Eingangspin des uC, uC überlebt

Die Bauteile müssen natürlich die ESD Belastung abkönnen, z.B. darf das
R nicht so ein kleines SMD Teil sein, dass es direkt einen
Spannungsüberschlag gibt. Abhilfe ist z.B. mehrere in Reihe schalten.

Die SW sollte robust gegen diese ESD Pulse programmiert sein....

ESD:
http://de.wikipedia.org/wiki/Electrostatic_Discharge
EMC/EMV:
http://de.wikipedia.org/wiki/Elektromagnetische_Vertr%C3%A4glichkeit

von Peter D. (peda)


Lesenswert?

@SuperUser

"Der Mensch fasst jetzt mit z.B. 8kV geladen und einer Kapazität von
100pF und einem Innenwiderstand von 1.5kOhm an den Pin an."


Offene Bauweise oder wie ?

Der Mensch faßt am Knopf oder am Gehäuse an und nicht an irgendwelchen
internen Drähten.

Und Deine Aufgabe (als Entwickler) ist es, daß nirgends direkt was
berührt werden kann (auch Ausgänge können ESD aufschnappen).

Üblich ist ja heutzutage, Kunststoffgehäuse innen zu beschichten und ne
Druckfeder an GND dagegen drücken zu lassen.

Früher hat man einfach Metallgehäuse genommen (ist robuster und sieht
edler aus), aber Geiz ist ja GGGeil !!!


Peter

von Jörg S. (Gast)


Angehängte Dateien:

Lesenswert?

Nur mal nebenbei angemerkt: Bei Reichelt gibt es jetzt optische
Drehimpulsgeber (ENC 62P22). Da soll keine Entprellung mehr nötig
sein.
Kosten allerdings auch um die 8-9€...

von SuperUser (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Peter,

leider geht die vollständige galvanische Trennung nicht immer...

Mobiltelefone haben Ladebuchsen, mein Drehencoder eine Metallachse,
dann braucht man Lüftungslöcher zur Wärmeabfuhr, es gibt USB/RS232
Anschlüsse, Mikrophone brauchen Schalleingangsöffnungen, Schallwandler
soll man hören etc. etc. Dabei soll alles schnukelig klein sein...

ESD braucht nun mal keinen direkten Kontakt sondern nur einen
Luftspalt.

Ich habe noch kein Gerät gebaut, dass man vollständig isolieren konnte
(o.k. ich arbeite im Consumer Bereich und nicht der rauhen Industrie).


In der Industrie - oder wenn es sehr klein werden soll - wird man auch
verstärkt bidirectionale suppressor dioden einsetzen, für USB und
andere schnelle Interfaces gibt es spezielle Schutz-IC's etc.  Ob ein
RC reicht muss man halt selber prüfen.

von SuperUser (Gast)


Angehängte Dateien:

Lesenswert?

>Üblich ist ja heutzutage, Kunststoffgehäuse innen zu beschichten und
ne
>Druckfeder an GND dagegen drücken zu lassen.

Das ist natürlich eine gute Sache, zumindest für nicht so hohe
Stückzahlen und im Privatbereich. Dazu habe ich auch noch ein nettes
Bildchen gefunden. Fazit daraus ist, mehrere Ground Kontakte sind
besser als einer....

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.