www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik knacknuss - uP problem


Autor: Sandro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab ein kleineres Problem.
hab einen C167. Eine Lichtschranke, die jeweils von einer nocke
unterbrochen wird (auf beide flanken getriggert). Die lichtschranke
gehts auf einen Interrupteingang des C167 und  löst dort pro umdrehung
(360°) rund 82 interrupts aus. Das Kabel zur Lichtschranke ist
geschirmtm, und uP seitig mit Masse verbunden. Auf dem Print wird das
Signal der lichtschranke noch über einen komparator geführt.
Nun zum Problem: Wenn ich die nocke nun eine Umdrehung machen lasse,
hab ich nicht exakt 82 Interrupts die ausgelöst werden, sondern ganz
verschieden zwischen 80 und 88... Das komische ist, das auch ungerade
interuptzahlen vorkommen (ist nicht wirklich möglich, die
Ausgangsposition der nocke ist eindeutig)...
Der Auszuführende Code ist minim, d.h. der up hat genügend zeit diesen
bis zum nächsten interrupt abzuarbeiten (kann ich so einfach abschätzen
da ich nur einen interrupt habe).

Jemand ne idee was ich noch versuchen könnte????

verzweifelter gruss
sandro

Autor: Danny P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde sagen du lässt das ganze Ding mal 5 komplette Umdrehungen
machen und schaust ob die Abweichung wieder nur +- 0...6 beträgt oder
auch das 5fache.

Ist die Abweichung trotzt höherer Umdrehungszahl immer noch +-0...6
dann vermute ich kommen die erzeugten Flanken vom "flattern" des
Ganzen beim starten/stoppen.

Wie lässt du genau eine Umdrehung zu? Kannst du überhaupt sicher sagen
das es genau eine Umdrehung ist? 4,3° als ein Teil ist schon sehr
gering...

Autor: Sandro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1 umdrehung hat exakt 360°, die geschwindigiet ist ebenfalls immer
identisch (ausser wenn ich ne andere einstelle :-) )
hmmm was genau meinst du mit flattern beim starten und stoppen????

mfg
Sandro

Autor: Danny P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mir ist noch schleierhaft wodurch du die 1 umdrehung exakt erzeugst. das
1 umdrehung 360° hat is mir schon klar... aber durch was stellst du
sicher das du genau 360° machst und nicht evt. 364° was ja wieder eine
gezählte abweichung +1 ist.

mit "flattern" meinte ich das dein erzeugen 1 umdrehung evt. zu
ungenau ist. wenn du die umdrehung bspw. per finger selbst drehst wirst
du das rad nie sauber durchgängig bewegen und so etwas wie
"schalter-prellen" erzeugen. nur das da nix kontakt-mässig prellt
sondern das rad sich halt minimal vor- und zurückbewegt... weisst wie
ich mein?

Autor: Sandro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
soll was zusätzliches zu einer bestehenden funktionierendne maschine
geben, die umdrehung wird duch einen DS Motor erzeugt... das passt
ok dann kann ich das flattern wie dus meinst auch ausschliessen, die
kurve die gefahren wird, die ist absolut sauber, hab ich jenste
messungen gemacht...

hmmm noch ne idee?

Autor: Danny P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auch wenn theoretisch ausgeschlossen, hast du mal 5 umdrehungen gefahren
und den zähler angeschaut?

Autor: Sandro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ne werd ich morgen checken...

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht sind dem C167 die Flanken des Lichtschrankensignals zu
langsam?  Dagegen würde ein Komparator mit Hysterese bzw. ein Schmitt
Trigger helfen.

Dieter

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich denke auch das es sich um so ein Flattern handelt. Ich würde in die
Interuppt Routine reinschreiben "wenn Flanke länger als xmSek, dann
Zähler erhöhen" also kann ein zu kurzer Impuls keine Zählung auslösen.

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

und schon wieder ein paar Rechtschreibfehler. Wird zeit für die
Editfunktion.

Autor: Sandro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dds5 hab ich ja

Thomas O.
hmmm ja das könnts bringen, gibts da so ne fastregel oder so wie ich
die länge berechnen kann, oder nehm ich da einfach mal die hälfte der
kürzest möglichen zeig???

mfg
sandro

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

denke das solltest du austesten. Ein Oszi wäre nicht schlecht dann
siehst du die Flanken. Vielleicht hilft auch ein keiner Kondensator.

Autor: Sandro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab das ganze mal etwas genauer ausgecheckt, leider ohne wirklichen
erfolg... die flanke die der uP bekommt sind ok (Trasholdspannung des
uP liegt bei etwa 2.5V, die Flanke legt die strecke von 2-3V in etwa
25ns zurück) für die ganze flanke von 0 bis 5V wird aber länger als die
zykluszeit gebraucht, was jedoch nicht entscheidend sein dürfte...

IEN Bit hab ich auch mal ausgeschaltet anfangs interrupt... keine
unterschied....

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.