mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Drehimpulsgeber-Signale auswerten


Autor: El Greco (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

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

Autor: El Greco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah, sehr gut, danke

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ??? (Gast)
Datum:

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

...geht also nur theoretisch...

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiterhin ist die Wahl der Pins frei..

Autor: SuperUser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: SuperUser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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_Ve...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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€...

Autor: SuperUser (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: SuperUser (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.