Drei überlappende Messignale auswerten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Lightsource.

    Drei überlappende Messignale auswerten

    Es geht zwar um eine Positionserkennung mittels 3er Fotodioden, aber das Prinzip lässt sich am einfachsten
    anhand einer RGB-Fotodiode erklären.
    Grob beschrieben hat jede der drei Dioden einen anderen Farbbereich, der einer gaussschen Glockenkurve ähnelt.
    Diese Kurven überlappen sich teilweise.
    Wenn ich nun die Messwerte einer Diode auswerten würde, hätte ich zwei Ergebnisse für die Wellenlänge.
    Nämlich auf etwa gleicher Höhe links und rechts der Kurve.
    Da man aber eine Überlappung der Wellenlängen zwischen den Dioden hat, gehen auch die Messwerte der beiden anderen Dioden in die
    Berechnung mit ein. Bitte versucht jetzt nicht wie ich, die Gaussgleichung aus Wikipedia zu verwenden, die
    hat nämlich einen Fehler.
    Eigentlich müsste ich also zur Berechnung die Gaussgleichung nach µ umformen. Das ist die Verschiebung
    der Kurve auf der X-Achse.
    Bevor ich mich aber daran mache, die drei Gleichungen zusammen zu setzen wollte ich hier mal fragen,
    ob jemand diese Berechnung schon mal gelöst hat, oder ob es eine einfachere Lösung gibt.
    Erschwerend kommt noch hinzu, dass ich nicht die Parameterform der Gleichung verwenden kann, sondern
    mir nur Stützpunkte zu Verfügung stehen, die ich erst noch in Parameter verwandeln müsste.
    Hi,
    für eine einigermaßen qualifizierte Antwort fehlen mir Infos.
    Du hast drei Dioden mit unterschiedlichen spektral sensitiven Eigenschaften?
    Was kommt als Strahler zum Einsatz?
    Welche Objekte sollen vermessen werden?
    Welche Messchaltung kommt zum Einsatz?
    Abtastrate?
    Versuchsanordnung mit Objekt und Strahler?
    Nur so für's Erste. ;o)
    @Lightsource Kannst Du mal zu Deinen Worten eine Skizze malen, dass das leichter verständlich wird?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es geht mir hier nur um die Mathematik.
    Ich schrieb ja schon, dass es im Prinzip um die Auswertung wie bei einer RGB-Fotodiode geht.
    Am ehesten findet man unter der Suche nach "RGB to Spektrum" Antworten.
    sv-journal.org/2015-4/03/en/index.php?lang=ru
    Im Moment will ich keine RGB to Spektrum Auswertung, sondern eine Positionserkennung
    eines Lichtstrahls, der 3 Fotodioden trifft. Da es sich hier nach meiner Meinung um die
    gleichen Formeln handelt, bin ich jetzt am Recherchieren um einfache mathematische
    Formeln zu finden.
    Da ich denke, dass noch mehr Leute die Berechnung brauchen, die dann z.B.
    ein Farbmessgerät bauen wollen, habe ich das Beispiel mit der RGB-Fotodiode gewählt.

    Lightsource schrieb:

    Positionserkennung
    da sehe ich eine Qua´dranten-Diode vor mir.
    Da Du von einer RGB-Diode sprichst, kannst Du ja Pech haben und bekommst nur zwei auswertbare Signale, also keine gesicherte Position.
    Da Du nur die Mathematik haben willst, wäre es praktisch, wenn Du mal ne Skizze von Deiner Diode und dem Messaufbau posten kannst,
    damit das ganze leichter verständlich ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Lasst Euch bitte nicht von irgendwelchen Diodenarrays oder Quadrantendioden ablenken.
    Der Aufbau, und die Verschaltung sind absolut irrelevant, bitte glaubt mir das X/
    In Post #4 habe ich einen Link angegeben, der die drei Kurven zeigt.
    Jeder dieser farbigen Kurven stellt das Eingangssignal dar.
    Aber seht sie einfach als mathematische Kurven, die auf irgend einer Formel basieren.
    Jede der Kurven schneidet die zwei anderen. Das sollten also genügend Parameter sein,
    um aus den Amplituden (Y-Werte) der drei Kurven die Position auf der X-Achse berechnen zu können.

    Nochmal: Diese Berechnung könnte verwendet werden, um aus den RGB-Werten einer RGB-Diode
    das Spektrum zu berechnen. Seht dies aber eher als Beispiel an, um eine Vorstellung für das Problem zu bekommen.
    Es geht hie rnicht um konkrete mA, oder Lichtstrahlfarben, sondern nur um die Berechnung von X aus 3 Y-Werten.
    @Lightsource Wo Grün sein Maximum hat, sind Rot und Blau Null.
    Definiere Position.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Lightsource schrieb:

    Grob beschrieben hat jede der drei Dioden einen anderen Farbbereich, der einer gaussschen Glockenkurve ähnelt.
    Diese Kurven überlappen sich teilweise...
    gut, das kann ich mir vorstellen, anhand der im Link gezeigten Kurven. Ich nehme jede dieser Kurven als Charakteristikum einer FotoDiode.

    Lightsource schrieb:

    ...Wenn ich nun die Messwerte einer Diode auswerten würde, hätte ich zwei Ergebnisse für die Wellenlänge.
    Nämlich auf etwa gleicher Höhe links und rechts der Kurve.
    Ich hab keine Idee, wie diese Aussage mit den genannten Kurven zusammenhängen könnte.
    Anders ausgedrückt: Hä?
    Wenn man die Gausskurve nach X bzw. µ umstellt kommen zwei Gleichungen (mit unterschiedlichen Vorzeichen) raus.
    Schau dir mal so eine Gausskurve an. Die hat eine linke und eine rechte Seite. Somit gibt es zwei Stellen, an denen
    die Amplitude (oder Y-Wert) gleich ist, aber zwei unterschiedliche Wellenlängen (X-Werte) entspricht.
    Darum nutzt es mir nichts, wenn ich einen Amplitudenwert einer Diode habe, um bestimmen zu können welcher
    Wellenlänge dieser entspricht.
    Als nächsten Schritt verbinde erst mal die Kurven von zwei Dioden, die ja eine unterschiedliche Empfindlichkeit
    für verschiedene Wellenlängen haben. Bei einer Messung der Amplituden bekommst du je zwei Wellenlängen
    als Ergebnis (jeweils die linke und rechte Seite der Gausskurve). Ich nehme nun an, dass die gesuchte
    Wellenlänge am Mittelwert der beiden äußeren bzw. inneren Amplitudenwerte liegt.

    Gausskurve:
    Pi=3.1415...
    e=2.7182...
    X= X-Achse
    M=Verschiebung auf der X-Achse
    S=Sigma Breite zu Höhe der Kurve?

    Quellcode

    1. A=(1/(S*(2*Pi)^(1/2)))*e^(-(1/2)*((X-M)/S)^2)


    Pi kann man beispielsweise weglassen, und für e irgendeinen Wert einsetzen, die sind ja nur für die Normalverteilung gedacht.
    Ich wollte eine Gausskurve verwenden, weil sie am ehesten der natürlichen Form einer Spektrallinie entspricht.

    Wenn ich nach X umstelle bekomme ich folgende zwei Gleichungen:

    Quellcode

    1. X = M-2^(1/2))*(log(1/(2^(1/2)*pi^(1/2)*A*S)))^(1/2)*S
    2. X = 2^(1/2)*(log(1/(2^(1/2)*pi^(1/2)*A*S)))^(1/2)*S+M

    ah - ich verstehe, was du meinst (glaub ich): also die Diode liefert einen Messwert, und du suchst den Punkt auf der Gaussschen Kurve (GK) - jo, das mögen zwei sein.

    Aber ich verstehe so eine Dioden-Charakteristik anders: Die gesamte Fläche unter der GK stellt die Empfindlichkeit der Diode dar.
    Also ein Messwert kann an jeder Stelle unterhalb der GK "gereizt" worden sein.
    Am höchsten Punkt der GK kann die Reizung am geringsten sein, weil dort ist die Diode am empfindlichsten.
    Aber auch andere Stellen unter der GK können denselben Messwert ergeben - wenn die Reizung entsprechend intensiver ist.

    Aber das ist jetzt nur so ausgedacht - und demnach wäre dein Ansatz glaub unpraktikabel.
    Einen praktikablen hab ich aber auch nicht. :(

    Lightsource schrieb:

    Rot und Blau Null ergibt 545nm
    OHa.
    Du willst also die Wellenlänge des Lichts bestimmen.
    Warum schreibst Du denn das nicht hin?
    Wie genau soll denn das ganze werden?
    Wie schmalbandig ist das Licht?
    Welche Toleranz ist erlaubt?
    Für das inverse Problem habe ich mit einer Tabelle gearbeitet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    Ich habe jetzt mal ein Excelblatt erstellt.

    C2 bis D3 sind die Kurvenparameter beider "Dioden".
    X ist sozusagen die Wellenlänge oder Position.
    Y D(a) ist die berechnete Amplitude nach der in C6 gezeigten Formel.
    Pos X D(a) ist die Rückrechnung, um aus der Amplitude wieder die "Wellenlänge" zu erhalten.
    Deren Formel steht in D7.
    Bei jeweils µ ist die Kurve nicht definiert (#ZAHL!). Das ist dann die Spitze der Peaks.

    @RodFromGermany
    Es geht nur am Rande um die Wellenlänge. Ich wollte das mathematische Problem an einem
    "einfachen" Beispiel, nämlich der Umsetzung von RGB-Werten zu Wellenlängen verdeutlichen.
    Und da diese Umrechnung bestimmt noch mehr Leute interessieren würde.

    Und deine Fragen kann ich leider auch noch nicht beantworten.
    Ich stelle mir das Ganze etwas so vor: Man beleuchtet die Dioden mit den einzelnen Wellenlängen
    mittels eines Spektrometers. Dadurch erhält man für jede Wellenlänge 3 Messwerte.
    Diese Messwerte sind mehr oder weniger die Umriss-Punkte einer Gausskurve.
    Nun muss man irgendwie, und das weiß ich noch nicht wie, die Parameter für die Gausskurven
    aus diesen Stützpunkten berechnen. So ähnlich wie die Trendlinie in Excel.
    Dann habe ich 6 Formeln, die ich für die Rückrechnung von Intensität zu Wellenlänge
    verwenden kann. Und wie ich diese 6 Formeln wieder verbinde weiß ich auch noch nicht.
    (Und nochmals, es geht mir persönlich nicht um die Bestimmung der Wellenlänge, sondern
    um eine Positionsbestimmung eines Lichtstrahls, der auf mehrere Fotodioden gerichtet ist.
    Da dieses Problem aber die gleichen Formeln braucht, habe ich nach einem ähnlichen
    Problem gesucht, das vielleicht auch andere Leute nützlich finden würden. Und so bin
    ich auf das Wellenlängenproblem gekommen)
    Bilder
    • Gausses.JPG

      158,9 kB, 1.000×686, 35 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!