knacknuss - uP problem

Gast #207035
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
Gast #207036
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...
Gast #207037
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
Gast #207038
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?
Gast #207039
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?
Gast #207043
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.
Gast #207045
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
Gast #207047
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren