Mal ne Laien-Frage: Zur Fremdlichtunterdrückung bei optischen Sensoren (und bei vielen anderen Übertragung en) wird moduliert, zB. OOK/Trägerfrequenz. Per Filter demoduliert. Bis zur Sättigung des Detektors (Sonneneinstrahlung) spielt der Gleichanteil keine Rolle. Um das rein digital mit Mikrocontroller (AVR) zu basteln, liegt es nahe, den Gleichanteil einfach dadurch zu eliminieren, den Signalwert ohne Sendesignal vom Signal mit Sendesignal abzuziehen. Entspricht das schon der o.g. Modulation?
Hatschi Puh schrieb: > Entspricht das schon der o.g. Modulation? Nö, das wäre eine Basisband-Übertragung mit Offsetkorrektur. Die Offsetkorrektur kann bei Nutzung eines Trägers ebenfalls durchgeführt werden, indem der Bias der Photodiode verschoben wird. mfg mf
Hatschi Puh schrieb: > Entspricht das schon der o.g. Modulation? Nein. Dazu muss der Sender eine zeitlich schwankende Helligkeit haben (Phasenmodulation kann man bei Licht ja vergessen) Zwei Empfänger, einer vom Lichtschrankensender beschienen, der andere knapp daneben, könnte man zur Subtraktion verwenden.
Achim M. schrieb: > Nö, das wäre eine Basisband-Übertragung mit Offsetkorrektur. MaWin schrieb: > Dazu muss der Sender eine zeitlich schwankende Helligkeit haben > (Phasenmodulation kann man bei Licht ja vergessen) > > Zwei Empfänger, einer vom Lichtschrankensender beschienen, der andere > knapp daneben, könnte man zur Subtraktion verwenden. Danke, leider verstehe ich das nicht. Trifft das auch zu, wenn der Sender mit z.B. 40 kHz gepulst wird (also an, messen, aus, messen, Differenz, ...)? Ist das immer noch Basisband?
Ich habe keine Ahnung von Nachrichtentechnik. Ich würde mich freuen, wenn es jemand etwas ausführlicher erklären mag, oder mich auf Stichworte und zugängliche Literatur verweisen könnte. Oder bin ich hier im falschen Forum, weil keine nennenswerte Verarbeitung gemacht wird? Also ist das "Verfahren" doch analog zu .. einem Bandpass beim Empfänger? Lock-In? Synchrondemodulator? Ist es ein brauchbarer Ansatz (für einen einzelnen Sensor)?
Hatschi Puh schrieb: > Ich habe keine Ahnung von Nachrichtentechnik. Dann ist es das Beste, Du hälst Dich an die erpobte Technik, und das ist die Modulation im kHz-Bereich. Zumal es da ja bereits fertige, billige Empfangs-ICs gibt.
Harald W. schrieb: > Modulation im kHz-Bereich Genau, und ist mein Ansatz nun eine brauchbare Demodulation oder ...?
Wenn es so wäre, müsste es einem digitalen Filter entsprechen (ein Filter in Softwre wird eingespart, da es synchron ist und der Gleichanteil subtrahiert wird)?
Hatschi Puh schrieb: > Also ist das "Verfahren" doch analog zu .. einem Bandpass beim > Empfänger? Lock-In? Synchrondemodulator? vielleicht beschreibst du "das Verfahren" mal möglichst eindeutig, dann kann man auch eindeutig antworten. Wenn du diese Beschreibung meinst: Hatschi Puh schrieb: > wenn der Sender mit z.B. 40 kHz gepulst wird (also > an, messen, aus, messen, Differenz, ...)? Das ist nicht "analog zu einem Bandpass beim Empfänger". Aus einem Bandpass würde das 40kHz-Signal rauskommen. Aus deiner Messung würde ein Differenzsignal rauskommen, das nicht 40kHz hat sondern niedrige Frequenzen ("im Basisband"). Als eine mögliche Implementierung eines Lock-Ins oder eines Synchrondemodulators könnte man dein Verfahren allerdings schon bezeichen (wobei dabei im Normalfall noch eine Tiefpassfilterung des Differenzsignals angeschlossen wird).
Danke für die Hilfe! Achim S. schrieb: > vielleicht beschreibst du "das Verfahren" mal möglichst eindeutig, dann > kann man auch eindeutig antworten. Wie gesagt, kenne ich mich nicht aus. Ich möchte eine Lichtschranke mit Fremdlichtunterdrückung mit (möglichst nur) einem Mikrocontroller basteln. Ich suche ein geeignetes (einfaches) Verfahren. Das angesprochene wäre einfach zu realisieren, ich kann es aber nicht einordnen und bewerten. Da es nur eine erste Überlegung ist, lässt es sich nicht "möglichst eindeutig" beschreiben. > Wenn du diese Beschreibung meinst: Ja. Achim S. schrieb: > Aus einem > Bandpass würde das 40kHz-Signal rauskommen. Stimmt, das müsste dann wohl noch gleichgerichtet und detektiert/bewertet werden. Keine Ahnung, daher will ich es ja möglichst rein digital machen. Achim S. schrieb: > Aus deiner Messung würde ein > Differenzsignal rauskommen, das nicht 40kHz hat sondern niedrige > Frequenzen ("im Basisband"). Also doch genau das gesuchte, ist doch gut. Achim S. schrieb: > wobei dabei im Normalfall noch eine > Tiefpassfilterung des Differenzsignals angeschlossen wird Um Störungen zu glätten oder prinzipbedingt?
Hatschi Puh schrieb: > Ich möchte eine Lichtschranke mit Fremdlichtunterdrückung mit (möglichst > nur) einem Mikrocontroller basteln. Ich suche ein geeignetes (einfaches) > Verfahren. ok, das ist für mich mal eine klare Aussage. Bei den bisherigen Beiträgen wurde mir ehrlich nicht klar, ob du etwas vernüftiges bauen willst. Oder ob du die Korrektheit und Anwendbarkeit von Fachbezeichnungen klären (denn du hast imho ziemlich wild mit Fachbegriffen um dich geworfen und nach deren Anwendbarkeit gefragt). Also du willst etwas bauen. Die nächste Frage für mich wäre: soll es eine einfache Lichtschranke werden (moduliertes Licht kommt an oder kommt nicht an). Oder willst du über den optischen Kanal Information übertragen (so wie z.B. die IR-Fernbedienung für den Fernseher). Für diesen Zweck gibt es integrierte Sender und Detektoren, die die Modulation/Demodulation selbst durchführen und dir damit das Leben erleichtern. Je nachdem, was du übertragen willst, wären aber unterschiedliche Varianten sinnvoll (was z.B. die AutoGainControl beim Empfänger angeht und dadurch den Dynamikbereich zu verbessern). Hatschi Puh schrieb: > Um Störungen zu glätten oder prinzipbedingt? durch dein bisheriges Vorgehen ohne Tiefpass unterdrückst du den Einfluss von DC-Störungen (du benutzt dafür den Begriff Gleichanteil). Je nach Beleuchtungssituationen können aber auch Störungen bei ganz anderen Frequenzen vorliegen. Um möglichst viele Störungen loszuwerden, musst du - die Modulationsfrequenz sinnvoll wählen (40kHz ist nicht so schlecht). - daneben aber auch noch die Bandbreite deiner Detektion durch den Tiefpass entsprechend einschränken - sonst werden dir die Störungen der anderen Frequenzen in dein Ergebnis reingemischt. Die "Basismaßnahmen" sind aber mindestens ebenso wichtig: - Detektor mit Tageslichtunterdrückung - ggf. Verstärker, der bevorzugt bei der Modulationsfrequenz verstärkt (muss kein ganz enger Bandpass sein: darum kümmert sich ja schon die phasenelektiver Gleichrichtung, wenn du noch einen Tiefpass nachschaltest).
Ja, meine Zusammenfassung war etwas knapp. Datenübertragung nicht direkt - Kodierung für mehrere "Geräte" evtl. schon, aber das ist dann ja schon "echtes" DSP. Da werde ich etwas "vorgekautes" brauchen, sonst reicht die Zeit nicht. Also, im ersten Schritt reicht einfach "Signal vorhanden" und ggf. noch die Signalstärke. Empfänger für IR kenne ich, danke. Aber ich möchte ja ein wenig die Prinzipien kennenlernen. Verstärker / AGC ist für mich der zweite Schritt. Eigentlich ist bei allem, was nicht Fernbedienung ist, der Aufbau fix und daher das Signal gleichbleibend. Zumindest bei mir. Nennenswerte Entfernungen und Nebelschwaden erwarte ich nicht. Direkte Sonneneinstrahlung auch erstmal nicht ;-) Achim S. schrieb: > die Bandbreite deiner Detektion durch den > Tiefpass entsprechend einschränken - sonst werden dir die Störungen der > anderen Frequenzen in dein Ergebnis reingemischt. Das leuchtet ein. Danke dir.
Hatschi Puh schrieb: > Da werde ich etwas > "vorgekautes" brauchen, sonst reicht die Zeit nicht. Hatschi Puh schrieb: > Empfänger für IR kenne ich, danke. Aber ich möchte ja ein wenig die > Prinzipien kennenlernen. Das passt für mich auch wieder nicht ganz zueinander. Entweder dir fehlt die Zeit und die willst schnell etwas funktionierendes auf die Beine stellen. Dann sind integrierte Empfänger mit Demodulator der passende Einstieg, und mit denen ist es auch einfach, ein paar Byte seriell zu übertragen. Oder du willst dich mit den Prinzipien auseinandersetzen und selbst etwas umsetzen. Dann brauchst du aber halt die dafür notwendige Zeit. Es ist keine "Raketentechnik" mit dem µC einen Sender auf 40kHz zu modulieren. Wenn der Empfänger vom selben µC ausgewertet wird, dann ist auch das Demodulieren machbar (wenn es zwei unabhängige µC sind wird es schon schwieriger). Aber selbst wenn beide Arbeitsschritte im selben Controller durchgeführt werden ist es nicht trivial, dass das gut funktioniert. Du musst dir Gedanken machen, dass dein Empfänger im linearen Bereich arbeitet (sowohl zu große als auch zu kleine Signale führen z.B. bei Fototransistoren zu einem Absinken der Empfindlichkeit). Du musst dir überlegen, wie schnell dein Empfänger auf das Schalten der Quelle moduliert und wie du das Timing des ADCs richtig hinbiegst, dass er gerade in den "richtigen" 1-2 µs seinen Sampling-Kondensator öffnet. Nicht unmöglich, aber für den Einstieg in das Thema auch nicht trivial...
Ich meinte die Kodierung. Angedacht, aber ich glaube nicht, dass ich dafür Zeit finden werde. Das Timing hielt ich bislang für unkritisch, die LEDs wollte ich vorerst nicht mit Pulsströmen betreiben, sie dürfen also länger als µs leuchten. Evtl. kann ich das kommende Woche mal ausprobieren.
Hatschi Puh schrieb: > sie dürfen also länger als µs leuchten. 40kHz Modulationsfrequenz heißt: die Periode beträgt 25µs. Man hat also bei 50% Duty-Cycle 12µs On-Zeit und 12µs Off-Zeit. Der Fotodetektor (und ein eventueller Verstärker) haben vielleicht nicht beliebig viel Bandbreite (sie sollen ja das Signal bei 40kHz detektieren, nicht alle möglichen Störsignale bei allen möglichen Frequenzen). Eine Bandbreite von 100kHz bedeutet: die Anstiegs- und Abfallzeit des gemessenen Signals beträgt 3,5µs (von 10% bis 90%). Es wäre also geschickt, nach der Schaltflanke am Sender erst mal 5µs zu warten, bis sich das Signal am Detektor eingeschwungen hat. Dann braucht auch der Sampling-Kondensator des ADC irgendwas im µs-Bereich, um den Wert korrekt zu übernehmen. Die Ansteuerung des ADCs wird also auf wenige µs genau sein müssen (synchronisiert mit dem Sender). Wie schon gesagt: das lässt sich hinkriegen. Aber ich wollte halt darauf hinweisen, dass es für den Einstieg auch nicht trivial ist. Und dass integrierte IR-Empfänger einem diese Arbeit abnehmen können.
Ich hab einen TIA aufgebaut und benutze zwei gleiche LEDs jeweils als Sender und Empfänger in geringem Abstand. Das Nutzsignal erreicht etwa die halbe Betriebsspannung..! Man sieht schön, wie sich Signal und Fremdlicht addieren. Statt 40 kHz bin ich vorerst bei ca. 4 kHz (1e6/8/13.5/2 = 4630, per ADC-Interrupt eines ATtiny85). Da dürfte das Timing noch unkritisch sein. Bei jedem Interrupt wird der Sender umgeschaltet und abwechselnd Messwerte für AN und AUS erfasst. Mit der Differenz (Offsetkorrektur) (entspricht das nicht einem Serienkondensator der den Gleichanteil eliminiert?) bleibt ein Wert (Signalamplitude), der per Schwellwert bewertet wird. Liegt das Signal acht mal in Folge (Tiefpass/Integrator) über dem Schwellwert, wird der Ausgang gesetzt. Ich habe ein paar neue Fragen, die kann ich hoffentlich morgen stellen ;-) Für Interessierte ein paar Links: https://de.wikipedia.org/wiki/Amplitudenmodulation https://de.wikipedia.org/wiki/Synchrondemodulation https://de.wikipedia.org/wiki/Lock-in-Verst%C3%A4rker https://de.wikipedia.org/wiki/Mischer_(Elektronik) https://de.wikipedia.org/wiki/Tiefpass https://www.mikrocontroller.net/articles/Codierte_%C3%9Cbertragung
Umgebaut auf differentielle Messung, um später den 20x gain des ADC nutzen zu können. Ansonsten ist es schonmal eine funktionierende Lichtschranke, aber bei der Signalstärke ja keine Kunst. Der nächste Schritt ist dann wohl, zur Auswertung einen "richtigen" Integrator zu benutzen...
Es wird nun 64 mal abwechselnd mit und ohne Licht die Ausgangsspannung vom TIA gemessen und multipliziert und integriert: die Messungen mit Licht werden zur Summe addiert, die Messungen ohne Licht davon abgezogen. Da das ganze vorerst stur in einer Schleife steckt und Messwerte über eine serielle Schnittstelle ausgegeben werden, passiert das nur mit ca. 1 kHz. Das lässt sich aber noch beschleunigen. Durch die Integration vieler Messungen kann nun auch ein stark gedämpftes Signal erkannt werden (Papier im Lichtweg), das auf dem Oszi (siehe Anhang, 5 ms, 500 mV) noch erkennbar, aber auf den ersten Blick in den ADC-Werten nicht mehr sichtbar ist. Eine "einfache Doppel-Messung" mit Offsetkompensation und Schwellwert schafft das nicht. Die Offsetkompensation steckt beim Integrator mit drin. Also ist eine analoge AC-Kopplung (via Koppel-Kondensator / Hochpass) wohl nicht zwingend erforderlich. Solange der Empfänger durch DC-Einstrahlung nicht in Sättigung gerät, und der ADC hoch genug auflöst, müsste das Nutzsignal erfasst werden können. Auch wenn ich das Prinzip nun begreife, dürfte das Ganze noch kein "richtiger" lock-in sein, da ein Sample pro Puls sehr weit von kontinuierlicher Integration entfernt ist - oder? Wie hängen denn Referenzfrequenz (also Pulsfrequenz) und Samplefrequenz zusammen? Was wäre, wenn bei gleicher Pulsfrequenz mehr Samples integriert würden? Steigt die Empfindlichkeit? Als nächstes werde ich mich an einer Art AGC versuchen (Referenzspannung und 20x Gain des ADCs). Siehe auch: Beitrag "Fotodiode Umgebungslicht filtern" Beitrag "Photodiode vor Fremdlicht schützen-Lock-in-Verstärker?" Beitrag "Lock-In Verstärker oder Korrelation?"
Hatschi Puh schrieb: > Auch wenn ich das Prinzip nun begreife, dürfte das Ganze noch kein > "richtiger" lock-in sein, da ein Sample pro Puls sehr weit von > kontinuierlicher Integration entfernt ist - oder? ich denke nicht, dass es irgendwo eine verbindliche Regelung gibt, wie viele Samples pro Periode ein digitaler Lock-In aufnehmen muss. Für mich darf man es dann einen lock in nennen, wenn - die Messung mit definiertem Phasenbezug zur Modulation stattfindet - die Modulationsfrequenz (oder bei manchen Anwendungen auch vielfache der Modulationsfrequenz) auf DC heruntergemischt/demoduliert wird - eine Tiefpassfilterung des demodulierten Signals stattfindet. Alle drei Kriterien dürfte deine aktuelle Umsetzung erfüllen. Ein Lock-In könnte auch per zeitkontinuierlicher Multiplikation mit einem Sinussignal realisiert werden, muss aber nicht. Du zeigst eine Menge Messungen. Aber ich tue mich schwer zu interpretieren, was genau da dargestellt sein soll, wenn nicht wenigstens ein bisschen was zu den Signalen gesagt wird. Messkurven, bei denen die Skalierung abgeschnitten wurde oder wenig aussagekräftig ist ("count, sample") ist auch nicht ideal. Wie groß sind denn bei deinen aktuellen Messungen konkret die Anteile von Signal (moduliert) und Störsignal?
Achim S. schrieb: > schwer zu interpretieren, was genau da dargestellt sein soll, wenn nicht wenigstens ein bisschen was zu den Signalen gesagt wird. Stimmt: Figure_1.png zeigt die 10-Bit-ADC-Werte (count) mit (on) und ohne (off) Licht. delta ist die Differenz der beiden. filtered ist ein gleitender Mittelwert über - ich glaube - 8 Werte. Wenn dieser den Schwellwert unterschreitet, geht output auf 0. Die samplerate war 8 kHz (-> Rechtecksignal mit ca. 4 kHz). Es sind also ein paar Sekunden dargestellt, in denen ich die Lichtschranke händisch unterbreche und ein bisschen mit der Taschenlampe auf den Empfänger leuchte. Aber das ist ja schon Schnee von gestern. opto.png zeigt mit 5 ms bzw. 500 mV Teilung in cyan die Pulse an die LED, in gelb den Ausgang vom TIA, und in magenta den Ausgang (Summe > 0). De Lichtschranke ist erst unterbrochen, dann ziehe ich das Hindernis heraus. Man sieht auch die kleine Denkpause, in der die 64 Werte verarbeitet werden. Achim S. schrieb: > Ein > Lock-In könnte auch per zeitkontinuierlicher Multiplikation mit einem > Sinussignal realisiert werden, muss aber nicht. Ja, das wäre wohl besser, aber ist natürlich aufwändiger. Als Kompromiss kann offenbar auch das Signal ein Rechteck, aber die Referenz ein Sinus sein. Das SNR wäre interessant, ich versuche das bei Gelegenheit mal zu ermitteln. Achim S. schrieb: > Alle drei Kriterien dürfte deine aktuelle Umsetzung erfüllen. Erstaunlich, dass es scheinbar funktioniert - auf den ersten Blick sah es nicht so simpel aus (die praktische Minimal-Umsetzung). Danke für die Begleitung ;-)
Nach Beseitigung der Störungen durch Netzbrumm und mit einem Bias, um den Ausgang am TIA in den funktionsfähigen Bereich zu heben, erreiche ich jetzt im abgedunkelten Raum und bei Fremdlicht ca. 50 cm Abstand mit wenigen mA Sendestrom (rote LED und 1k Vorwiderstand an 5 V). Das lässt sich mit richtiger Fotodiode, einem besseren Verstärker und AC-Kopplung mit Sicherheit vervielfachen (mit Offset lässt sich die interne 20x Verstärkung des Mikrocontrollers nicht nutzen). Pulsbetrieb vom Sender geht natürlich auch noch. Die Messfrequenz ist immer noch etwas langsam, so dass ein "Blitz" einer Taschenlampe schon zu einer Erkennung führt (eine einzelne Messung über Rauschen reicht, um die Summe über den Schwellwert zu bringen). Das lässt sich filtern. Und momentan ist alles noch "freilaufend", das wird Timer/Interrupt gesteuert noch schneller. Aber schonmal die nächsten Schritte angedacht (bitte korrigieren!): Momentan wird nur ein Rechteck mit 32 Pulsen "gesendet" (32, da 64 Werte gut in den Speicher passen). Um mehrere Sensoren gleichzeitig betreiben zu können, müsste ich im Idealfall Rauschen senden. Da Sender und Empfänger eine Einheit sind, also keine Synchronisierung erforderlich ist, könnte das vermutlich sogar echtes Rauschen sein. Habe ich nicht, also eine Pseudozufallsfolge. Diese muss aber so beschaffen sein, dass nicht mehrere Sender dieselbe (oder ähnliche) Folgen erzeugen; also eine möglichst kleine Kreuzkorrelation haben -> orthogonale Signale. Dann gehen die jeweils anderen Folgen ins Rauschen ein. Und falls doch mal Sender und Empfänger getrennt sind, muss der Empfänger sich auf den Sender bzw. auf den gesendeten Code synchronisieren und dazu diesen (in Software) autokorrelieren. Es gibt (wenige) Codes, bei denen die Autokorrelation ideal ist (https://de.wikipedia.org/wiki/Barker-Code). Es kann dann wohl auch gemischt werden: eine Art Code für die Synchronisierung und ein anderer für die Daten. Nun mal angenommen, ich möchte zwei Sensoren betreiben, was wäre der einfachste Ansatz? Barker Code (da kurz) einmal normal und einmal invertiert Manchester-Kodieren und dann senden?
Hatschi Puh schrieb: > Barker Code (da kurz) einmal normal und einmal invertiert > Manchester-Kodieren und dann senden? Nein, die sind nicht "orthogonal".
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.