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
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...
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
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?
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?
auch wenn theoretisch ausgeschlossen, hast du mal 5 umdrehungen gefahren und den zähler angeschaut?
Vielleicht sind dem C167 die Flanken des Lichtschrankensignals zu langsam? Dagegen würde ein Komparator mit Hysterese bzw. ein Schmitt Trigger helfen. Dieter
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.
Hallo, und schon wieder ein paar Rechtschreibfehler. Wird zeit für die Editfunktion.
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
Hallo, denke das solltest du austesten. Ein Oszi wäre nicht schlecht dann siehst du die Flanken. Vielleicht hilft auch ein keiner Kondensator.
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....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.