do
Hysterese:
loop
Hysterese von was für was?
do
Hysterese:
loop
Hysterese von was für was?
Vor den Erfolg haben die Götter den Schweiß gesetzt
Denke mir, allgemein, du verwendest für steigendes und fallendes X verschiedene Grenzwerte bzw. Faktoren für die y=f(x) Funktion.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Wenn wir mal davon ausgehen, dass du zB die Hysterese bei Schmitttriggern meinst (wir sind ja schließlich in einem Robotikforum) dann könnte das in Pseudocode so aussehen
sastCode:if out==1 then if in<min then out = 0; endif else if in>max then out = 1; endif endif
雅思特史特芬
开发及研究
Entschuldigung, ich war ein bisschen Wortkarg...
Ein ADC mißt eine Spannung ADCSpannung. Mit einem Select-case wird diese ausgewertet. Es tritt jedoch an den Übergängen ein flattern auf, wenn die Spannung leicht um den Grenzwert UGrenze schwankt. Wie bei einem Schmitt-Trigger, wie sast schon erwähnt hat soll die Hysterese das verhindern
Code:ADCSpannung = getadc(0) select case ADCSpannung case is < UGrenze 'tuwas case UGrenze to UGrenze2 'tuwas anderes usw.
Naja, ZWISCHEN den Grenzen passiert ja genau nix.
eigentlich:
Code:select case ADCspannung case is > LimitHi: OUT = 1 case is < LimitLow: OUT = 0 end select
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Jetzt fällt der Groschen. Anstatt nur eines Grenzwertes definiere ich 2, die um die Hysterese auseinanderliegen. Dazu definiere ich noch eine Variable "OldValue", die mir die aufsteigende oder abfallende Flanke anzeigt.
Luftcode
Code:select case ADCSpannung case is < UGrenzeUnten 'tuwas OldValue = unten case UGrenzeUnten to UGrenzeOben 'ich bin die Hysterese if OldValue = unten then 'tu das gleiche wie unten else 'tu das gleiche wie oben endif case is > UGrenzeOben 'tuwas OldValue = oben end select
@Robert
ja so kurz gehts auch
Jetzt wird das Ganze etwas klarer. Du musst dir aber im klaren sein, dass du beim Festlegen einer scharfen Grenze (UGrenze) immer mit solchen Schwankungen zu kämpfen hast.
Entweder du weichst die Grenze auf und nutzt unseren Vorschlag zB mit UGrenze-X und UGrenze+X als min und max, oder du mittelst über mehrere Werte, oder machst einen "wenn geändert dann Vergleich" indem du den Wert mit Wert_old vergleichst und nur änderst wenn eine bestimmte Größenschwelle überschritten wird und dein Case arbeitet dann immer mit Wert_old.
Das ist im Grunde immer irgendwie das Selbe, nur an verschiedenen Stellen im Code realisiert.
sast
Edit:
mein Post kommt wie immer zu spät. Naja gut wenn du alleine in die richtige Richtung denkst.
Aber mal im Ernst, seit einigen Wochen ist das RN ziemlich häufig wegen "Überlastung" nicht richtig erreichbar, da macht das Antworten manchmal echt keinen Spass. Liegt das an den neuen Servern, oder ist das RN wirklich so stark frequentiert?
雅思特史特芬
开发及研究
Hallo,
danke für die Mithilfe, das VORLÄUFIGE Ergebnis unter:
http://www.gerold-online.de/cms/whee...adegeraet.html
Günter
Lesezeichen