Ich versuche derzeit, einen Bandpass zu designen.
Die gesamte Schaltung besteht aus einer Fotodiode mit einem
Transimpedanzverstärker dahinter, dann dem Bandpass und letztlich einem
Schmitt-Trigger. Zweck der Schaltung ist es, ein Rechtecksignal im
Bereich 500Hz - 10kHz aus Rauschen (einmal im bereich ~100Hz und einmal
>30kHz) herauszufiltern.
Der Bandpass besteht zur Zeit aus zwei Hochpässen und einem Tiefpass.
Ich habe mich noch nicht auf einen Operationsverstärker festgelegt, er
sollte nur billig sein. Nach Möglichkeit würde ich gerne den OpAmp auch
noch für den Schmitt-Trigger mitverwenden (entweder also zwei OpAmps mit
je 2 Channels oder einer mit 4).
Leider macht mir die Phasenverschiebung (zu sehen im Bild
"Bandpass_AC.png") allerdings gerade das Signal beim Filtern kaputt. Das
ist zumindest meine Vermutung.
Wie kann ich dieses Problem beheben bzw. ist das überhaupt die richtige
Diagnose?
Es ist unvermeidbar dass ein Bandpaß das Rechtecksignal verformt - egal
welchen OPV Du verwendest. Ein 100Hz-Rechtecksignal besteht nach Fourier
nun mal nicht nur aus einer 100Hz-Sinus-Grundwelle, sondern einer ganzen
Reihe von Fourier-Komponenten, die alle - ohne Amplituden- und
Phasenfehler - übertragen werden wollen.
Hmm, sowas in der Richtung hatte ich befürchtet. Aber an den
Frequenzbereich des Rechtecksignals hatte ich gar nicht mehr gedacht.
Hast du eine Idee, wie ich dennoch ein brauchbares Signal aus dem Filter
bekommen kann?
Entweder Du lebst mit der Kurververformung Deines Rechtecks, oder Du
kombinierst einen Bandpass mit einem Allpass. Letzterer zur Korrektur
der Phasenfehler des Bandpasses. Bei der praktischen Dimensionierung
kann ich Dir nicht weiterhelfen, das ist nun nicht gerade mein
Spezialgebiet.
Lass den Hochpass weg.
Hast du schon mal die Rauschspannung mit und ohne Hochpass verglichen?
Die Anlayse dazu heißt ".NOISE".
Bei einem 1MegOhm feedback-Widerstand dürfte der Unterschied nicht mehr
so groß sein.
JL Euler schrieb:> Beitrag "Re: Phasenproblem beim Bandpass mit OpAmps">>> Lass den Hochpass weg>> Den Hochpass kann ich leider nicht weglassen, da bei 100Hz mein Rauschen> potentiell größer ist als mein Signal.
Also ich schätze da einen Unterschied von 5uV durch das Rauschen von 0
bis 500Hz. Der 1MegOhm Widerstand macht 20uV Rauschen über die 30kHz.
Ich ging jetzt davon aus, dass du eine Si-Photodiode hast und keine
Ge-Diode.
In LTspice kann man V(onoise) integrieren lassen um die Rauschspannung
zu bekommen.
Helmut S. schrieb:> In LTspice kann man V(onoise) integrieren lassen um die Rauschspannung> zu bekommen.
Wie genau geht das? Doch eigentlich nur bei einer .trans Analyse, oder?
Helmut S. schrieb:> Ich ging jetzt davon aus, dass du eine Si-Photodiode hast
Das ist richtig. Eine SFH 2440 um genau zu sein
Helmut S. schrieb:> Der 1MegOhm Widerstand macht 20uV Rauschen über die 30kHz.
Der Verstärkungswiderstand selbst erzeugt also mehr Rauschen aus als je
über die Photodiode ankommen würde?
Häng doch mal den Schaltplan und die Modell-Datei mit OPA381 umd LM321
an.
V(onoise) plotten. Die x-Achse auf den Bereich setzen in dem man die
Rauschspannungsdichte integrieren will.
.noise V(out) I1 dec 100 1 30k
Cursor auf V(onoise) bewegen
CTRL-linke-Maustaste
Damit geht ein kleines Fenster auf in dem die Rauschspannung angezeigt
wird.
Anbei sind die gewünschten Dateien.
V(out) wäre in diesem Fall bisher Vbp (Bandpass) oder Vap (Allpass),
wobei ich den Allpass noch nicht richtig dimensioniert habe.
Die Rauschspannung an Vap beträgt ca 37µV.
Ich habe deine Schaltung mal angeschaut.
LTspice
in V() gehören immer runde Klammern hin.
.noise V(Vbp) I1 dec 100 1 100k
Die untere Frequenz habe ich auf 1Hz gelegt.
Da LTspice in der Schaltung erst mit der "pseudo transient analysis" den
Arbeitspunkt findet, überspringe ich die anderen Versuche.
.options noopiter gminsteps=0 srcsteps=0
Bei mir sind die Modell-Dateien immer im Ordner des Schaltplans. Deshalb
reicht ein
.include OPA381.LIB
.include LM321LV.cir
Damit hat man alles in einem Ordner. Zum Weitergeben einfach den Ordner
zippen. Den kann man dann auf jedem Rechner in jedem beliebigen
Verzeichnis entpacken und sofort simulieren. So muss das sein.
Schaltung
Die Rauschspannung am Ausgang V(bp) ist mit und ohne Hochpass fast
identisch. Das bedeutet du kannst den Hochpass entfernen, wenn der nur
wegen weniger Rauschen drin ist.
Der LM321 hat einen Biasstrom von bis zu 0,5uA. Deshalb macht man da
höchstens Widerstände mit wenigen 10kOhm an die Eingänge. Deine
Hochpasswiderstände sollten um Faktor 10 kleiner gewählt werden.
Photodiode
Die Photodiode hat eine Kapazität von C0=135pF, Diese Kapazität gehört
in den Schaltplan zwischen Vph und Masse da diese einen starken Einfluß
auf das Rauschen hat. Das Rauschen ändert sich von 22uV auf 36uV.
Außerdem hat diese Kapazität einen Einfluss auf das Verhalten in der
AC-Analyse und im Zeitbereich. Die minimale Kapazität von C1 hängt von
C0, dem GBW des Opamps und dem "feedback"-Widerstand ab.
Helmut S. schrieb:> Das bedeutet du kannst den Hochpass entfernen, wenn der nur> wegen weniger Rauschen drin ist
Er soll hauptsächlich Störsignale herausfiltern, das habe ich vielleicht
vorher etwas undeutlich formuliert. So soll das 100Hz flimmern und der
Gleichanteil von Quellen wie Sonnenlicht abgeschwächt werden.
Helmut S. schrieb:> Deine> Hochpasswiderstände sollten um Faktor 10 kleiner gewählt werden.Helmut S. schrieb:> Die Photodiode hat eine Kapazität von C0=135pF, Diese Kapazität gehört> in den Schaltplan zwischen Vph und Masse da diese einen starken Einfluß> auf das Rauschen hat.Helmut S. schrieb:> in V() gehören immer runde Klammern hin.
Vielen Dank für die Infos!
Helmut S. schrieb:> Den kann man dann auf jedem Rechner in jedem beliebigen> Verzeichnis entpacken und sofort simulieren.
Danke für den Tipp :D
Könntest Du mir evtl einfach deine Version der Schaltung hochladen?
Welchen Polynomkoeffizienten hat denn Dein Filter? Um ein möglichst
unverzerrtes Rechteckübertragungsverhalten zu bekommen, sollte der
Phasengang im Durchlassbereich linear, d.h. proportional zur Frequenz
sein. Dann führt das Filter nur zu einer Verzögerung. Ein Besselfilter
wäre also am besten geeignet. Da die obere und die untere Eckfrequenz
des Bandpasses weit auseinanderliegen, kann dieser wie in Deiner
Simulation als Serienschaltung eines Bessel-Tiefpasses mit einem
Bessel-Hochpass realisiert werden. In Deinem Fall hätte der TP die
Ordnung 2, der Hochpass die Ordnung 4.
Hast Du die Wirkung der beiden Filter auf das Rechtecksignal mal
getrennt untersucht? Da das Rechteck mit 1kHz deutlich über der
Hochpass-Eckfrequenz von 500 Hz liegt, sollte es nahezu unverzerrt
durchgelassen werden. Ein Bessel-Tiefpass mit 30kHz sollte die Ecken
allenfalls ein wenig abrunden.
Ich vermute, dass Dein Filter von der idealen Besselform stark abweicht
und deswegen zu Verzerrungen führt.
Moin,
Was ist denn eigentlich das Problem? Inwiefern schauen denn die Signale
nach dem Bandpass nicht mehr "schoen" aus? Wie sollten sie denn
ausschauen?
Das mit dem Bessel fuer weniger Phasenfaxen stimmt zwar prinzipiell,
aber bei Filtern mit niedriger Ordnung wie hier, ist der Unterschied
zwischen den verschiedenen Approximationen eher klein. Also das wird
nicht wesentlich anders werden.
Gruss
WK
Helmut S. schrieb:> Im Anhang ist meine Datei.> Es gibt übrigens auch ein europäisches Widerstandssysmbol.> [Misc] European resistor
Vielen Dank!
Ah, den hatte ich noch nicht gefunden. Danke für den Hinweis.
Dergute W. schrieb:> Inwiefern schauen denn die Signale> nach dem Bandpass nicht mehr "schoen" aus? Wie sollten sie denn> ausschauen?
"nicht mehr schön" heißt, dass das Eingangsignal zu verzerrt ist. Mein
Ziel ist es, das Rechtecksignal möglichst genau wieder zu bekommen, so
wie es ankommt. Der Filter sit wie gesagt dazu da, um Störsignale bei
~100Hz und >30kHz herauszufiltern.
Mike schrieb:> Welchen Polynomkoeffizienten hat denn Dein Filter?
Das weiß ich leider gerade nicht, Ist auch das erste Mal, dass ich das
im Zusammenhang mit Filtern höre. Filterdesign ist für mich noch etwas
Neuland.
Mike schrieb:> Ein Besselfilter> wäre also am besten geeignet.
Ich muss ganz ehrlich sein, ich weiß leider nicht, wie man einen solchen
designt.
Trotzdem schonmal vielen Dank für eure Hilfe bisher!
Dergute W. schrieb:> Moin,>> Hier gibts ein tolles Spielzeug:>> https://www.analog.com/designtools/en/filterwizard/>> Da kannst du probieren, ob's mit Besselfiltern schoen genug wird.>> Gruss> WK
Hab mal damit ein Bessel-Filter berechnen lassen.
Das Ergebnis mit dem Puls im Zeitbereich zeigt kaum Verbesserungen.
Wenn man auf einen Hochpass ein Rechteck mit zu tiefer Frequenz gibt,
dann wird der differenziert. Steigert man die Frequenz der Pulse, dann
erkennt man den Puls schon besser aber man hat eine Dachschräge. Erst
wenn man weit über der Grenzfrequenz liegt, bekommt man wieder ein
"schönes" Rechteck am Ausgang.
Moin,
Hab's mir mal angeschaut; also ich wuerd' sagen: Es ist tatsaechlich der
Phasengang/Gruppenlaufzeit, die die Probleme macht.
Hab' mal aus 3 Sinuessen was "rechteckartiges" gebastelt (gruen) und
dann noch diese Sinuesse mal in der Phase so aehnlich verschoben, wie's
der Filterwizard bei der Gruppenlaufzeit angezeigt hat(schwarz).
Die Gruppenlaufzeit beim Bessel biegt zu tieferen Frequenzen hin schon
arg zu hoeheren Werten ab. So wie's aussieht, koennt's sogar besser
sein, entgegen der klassischen Lehrmeinung, einen Tschebyscheff-Hochpass
niedrigerer Ordunung (also 2.) zu nehmen, weil dessen grosse GLZ-Beule
im Sperrbereich ist; und im Durchlass dann weniger.
Wenn das nicht reicht, wirds halt arg aufwendig. Dann kann man noch mit
ein paar Allpaessen zusaetzliche Beulen in die Gruppenlaufzeit dengeln
und muss gucken, dass die zusaetzlichen Beulen zusammen mit der
Original-hochpass-gruppenlaufzeitkante sich halbwegs ausbuegeln. Ist ne
unangenehme Rechnerei und die Bauteile/OpAmp Anzahl wird sich dann
locker verdoppeln bis ver-N-fachen.
Gruss
WK
Beitrag "Re: Phasenproblem beim Bandpass mit OpAmps"
Danke für die Antwort.
Es scheint also wirklich keine sehr einfache Lösung zu geben, die nicht
gleich die Zahl der OpAmps stark in die Höhe treibt, oder?
Was ratet ihr mir als einfachste Lösung?
Moin,
JL Euler schrieb:> Es scheint also wirklich keine sehr einfache Lösung zu geben, die nicht> gleich die Zahl der OpAmps stark in die Höhe treibt, oder?
Ich seh' sogar nur eine sehr schwierige Loesung mit vielen OpAmps :-)
Kommt halt drauf an, was du mit dem Signal weiter anstellen willst.
Wenns eh' irgendwann mal digitalisiert wird, dann wird da eine
Laufzeitentzerrung wohl simpler sein, kostet aber dann CPU-Power statt
Opamps+R+C.
Oder eben mit dem komischen Signal leben, von dem man weiss, dass es mal
ein Rechteck war, wenns so aussieht.
Gruss
WK
JL Euler schrieb:> So soll das 100Hz flimmern und der> Gleichanteil von Quellen wie Sonnenlicht abgeschwächt werden.JL Euler schrieb:> Was ratet ihr mir als einfachste Lösung?
Wenn deine Probleme tatsächlich nur die 100Hz und der Gleichanteil sind,
kannst du vielleicht ein 100Hz-Kerbfilter nehmen, das je nach Güte bei
500Hz vernachlässigbare Phasendrehung macht, und den Gleichanteil
einfach durch einen Koppelkondensator abtrennen.
JL Euler schrieb:> Die gesamte Schaltung besteht aus einer Fotodiode mit einem> Transimpedanzverstärker dahinter, dann dem Bandpass und letztlich einem> Schmitt-Trigger. Zweck der Schaltung ist es, ein Rechtecksignal im> Bereich 500Hz - 10kHz aus Rauschen (einmal im bereich ~100Hz und einmal>>30kHz) herauszufiltern.
Hallo, es wäre vielleicht mal interessant, wenn du zeigst, wie dein
Rohsignal überhaupt aussieht! Kenne mich mit Photodioden nicht so
aus...zumal du nicht gesagt hast, was du da eigentlich messen
willst...aber wenn du sowohl 50/100Hz als auch Rauschen draufhast, wäre
zu überlegen, ob deine Kette Filter-Schmitt-Trigger überhaupt ein
sinnvoller Ansatz ist. Wenn es nur um eine Frequenz, 50 oder 100Hz geht,
würde ich auch ein Kerbfilter vorschlagen. Das ist aber auch nicht ohne,
wenn es mehr als -30dB Unterdrückung bringen soll. Ich vermute jetzt mal
einfach, dass du ein anderes Problem hast!
Gruß Rainer
JL Euler schrieb:> Es scheint also wirklich keine sehr einfache Lösung> zu geben, die nicht gleich die Zahl der OpAmps stark> in die Höhe treibt, oder?>> Was ratet ihr mir als einfachste Lösung?
Naja.
Mein Vater pflegt immer zu sagen: "Eine gut gestellte
Frage ist schon die halbe Antwort." Oder auch medizinisch:
Vor der Therapie kommt die Diagnose.
Du sprichst in Deinem Ursprungsbeitrag (anfängertypisch)
von "Rauschen". Nun ist Rauschen aber ein zufälliges,
breitbandiges, unkorreliertes Signal. Das trifft zum
Beispiel auf das thermische Rauschen, das Schrotrauschen
und das Funkelrauschen zu.
Bereits das sogenannte "Quantisierungsrauschen" bei der
A/D-Wandlung ist eigentlich keins (es hängt nämlich
direkt funktional vom Nutzsignal ab) und müsste korrekt
als "Quantisierungsverzerrung" bezeichnet werden.
Fast alles, was von Laien als "Rauschen" bezeichnet wird,
ist keins.
Allenfalls handelt es sich um Störungen, und die bekämpft
man am besten, indem man ihre Ursache abstellt, soweit das
möglich ist. Häufig kann man Sensorik auch gegen bestimmte
Typen von Störungen abhärten, aber dazu muss man deren
Charakteristik erstmal kennen.
Steht also die Frage, welches Problem Du EIGENTLICH hast.
Darüberhinaus: Hochpässe bestimmen im Sperrbereich die
Ableitung (=Anstieg); bei einem Hochpass 4. Ordnung ist
das die 4. Ableitung. Es ist also unvermeidlich, dass bei
Signalen in der Nähe der Grenzfrequenz starke Verformungen
auftreten. Darauf wurdest Du ja schon hingewiesen. Das
hängt auch nur wenig vom konkreten Filtertyp ab, sondern
ist prinzipbedingt.
Egon D. schrieb:> Es ist also unvermeidlich, dass bei> Signalen in der Nähe der Grenzfrequenz starke Verformungen> auftreten. Darauf wurdest Du ja schon hingewiesen. Das> hängt auch nur wenig vom konkreten Filtertyp ab, sondern> ist prinzipbedingt.
Und Rechtecksignale mit analogen Filtern zu "säubern" ist ja eh
aussichtslos...
Wir brauchen also weitere Infos!!!
Gruß Rainer
Danke für die vielen Vorschläge und Ansätze!
Egon D. schrieb:> Naja.> Mein Vater pflegt immer zu sagen: "Eine gut gestellte> Frage ist schon die halbe Antwort." Oder auch medizinisch:> Vor der Therapie kommt die Diagnose.
Dann möchte ich hier nocheinmal den Sachverhalt genau beschreiben:
Ich soll für einen Workshop mit einem Mikrocontroller über eine
High-Power LED Daten an einen weiteren Mikrocontroller mit Photodiode
senden (beide Controller haben hierbei sowohl eine LED als auch eine
Diode).
Da das Ganze in geschlossenen Räumen nutzbar sein soll, kommen durch
gewöhnliche Lampen Störsignale (kein Rauschen, das ist richtig) in den
Bereichen zwischen 0Hz und 100 Hz von Sonnenlicht und gewöhnlichen
Lampen und über 30kHz durch Leuchtstoffröhren u.ä. an den Photodioden
an.
Das übertragene Signal soll hier zu Vorführungszwecken die Werte 500Hz,
1kHz, 2kHz, 4kHz und 10kHz haben.
Somit liegen die Störsignale bei N1 = [0Hz, 100Hz] und N2 = [30000Hz,
inf) und das Nutzsignal bei S = [500Hz, 10000Hz].
Auf dem Mikrocontroller habe ich 3 Timer zur Verfügung, wobei zwei
häufig von anderen Libraries verwendet werden und ich den dritten zur
Übertragung meines Signals nutze. Dadurch kann ich auf dem
Mikrocontroller selbst nicht digital filtern und müsste das Ganze analog
angehen. Unser Budget ist leider stark begrenzt, weshalb wir sowohl für
den Controller als auch für die analoge Schaltung nicht übermäßig viel
Geld ausgeben können.
Da das wahrgenommene Licht der LED immer die gleiche Helligkeit haben
soll, wird für die Übertragung eine Manchester Kodierung genutzt.
Dadurch wird das übertragene Signal aus Rechtecken bestehen.
Um die Signale möglichst einfach und zuverlässig verarbeiten zu können
arbeite ich zur Zeit nur mit Interrupts auf der Empfängerseite. Dafür
brauche ich allerdings möglichst genau das übertragene Rechtecksignal
zurück.
Bei der ersten Iteration des Workshops haben wir die in diesem Projekt
verwendete Schaltung am Ende leicht abgewandelt und mit einem
Schmitt-Trigger versehen. Das Ergebnis war aber leider sowohl teuer als
auch unzuverlässig, auch bei einer Übertragungsrate von nur 1kHz.
Deshalb ist es nun meine Aufgabe, eine billigere, aber möglichst
effiziente Schaltung zu designen.
JL Euler schrieb:> Da das Ganze in geschlossenen Räumen nutzbar sein soll, kommen durch> gewöhnliche Lampen Störsignale (kein Rauschen, das ist richtig) in den> Bereichen zwischen 0Hz und 100 Hz von Sonnenlicht und gewöhnlichen> Lampen und über 30kHz durch Leuchtstoffröhren u.ä. an den Photodioden> an.> Das übertragene Signal soll hier zu Vorführungszwecken die Werte 500Hz,> 1kHz, 2kHz, 4kHz und 10kHz haben.>> Somit liegen die Störsignale bei N1 = [0Hz, 100Hz] und N2 = [30000Hz,> inf) und das Nutzsignal bei S = [500Hz, 10000Hz].
Ich denke ihr seht die Sache zu einfach.
1. Ist das Störsignal am unteren Ende nicht auf 100Hz begrenzt. Dazu
müsste der störende Anteil des Lichtstromes der Lampen genau sinusförmig
sein. Das ist aber nicht der Fall. Hier mal beispielhaft die Messung
einer LED-Lampe:
Beitrag "Re: E27 LED-Lampe aus Metall"
Man sieht deutlich, dass da auch noch erhebliche Oberwellen drin sind,
die ggfs. bis oder über 500Hz merklich sind.
2. Wenn ihr 10kHz "sauberes" Rechteck übertragen wollt, dann muss eure
Übertragungsbandbreite weit größer als die 30kHz sein ab der du aber
unterdrücken willst, weil so ein Rechtecksignal eben Harmonische der 3.,
5. ... Grundfrequenz enthalten muss. Siehe das Beispiel oben vom guten
Weka.
ArnoR schrieb:> Man sieht deutlich, dass da auch noch erhebliche Oberwellen drin sind,> die ggfs. bis oder über 500Hz merklich sind.
Solange diese Anteile nicht übermäßig groß sind, sollte das kein großes
Problem sein, denke ich.
ArnoR schrieb:> 2. Wenn ihr 10kHz "sauberes" Rechteck übertragen wollt, dann muss eure> Übertragungsbandbreite weit größer als die 30kHz sein
Ich kenne gerade die Rechnung dazu nicht, aber bis zu welcher Frequenz
ginge es denn? 10kHz ist eher ein Optimum, das ich nicht einhalten muss.
JL Euler schrieb:> Ich kenne gerade die Rechnung dazu nicht, aber bis zu welcher Frequenz> ginge es denn?
Nehmt euch doch mal einen Simulator und legt einfach Grundwelle und
Harmonische übereinander und entscheidet wie gut es sein muss.
Man könnte evtl. das Sendesignal vorverzerren, d.h. die
Signalverformung, die das Empfängerfilter macht, durch gegenläufiges
"Übersteuern" der Sendediode kompensieren.
ArnoR schrieb:> Legt einfach Grundwelle und> Harmonische übereinander und entscheidet wie gut es sein muss.
Mit sowas habe ich leider überhaupt keine Erfahrung.
Was für eine Güte hat denn eigentlich dein Bandpass? Hohe Güte also
kleine Bandbreite ist zwar schön, erhöht aber die Einschwingzeit des
Filters. Für mich sieht das so aus als ob das ganze unglücklich
dimensioniert ist. Die Flankensteilheit deines Rohsignals ist deutlich
kleiner als die Einschwingzeit des Bandpasses - und wird dementsprechend
stark verzerrt.
Mir sind deine Anforderungen nicht ganz klar geworden, aber
möglicherweise gibt es noch einen anderen Ansatz für deine
Problemstellung.
JL Euler schrieb:> Das übertragene Signal soll hier zu Vorführungszwecken die Werte 500Hz,> 1kHz, 2kHz, 4kHz und 10kHz haben.
Danke für die konkreten Infos zum Projekt. Und obwohl du noch nicht
gesagt hast, was für Daten da übertragen werden sollen, kann man ja
jetzt schon mal weiter denken. Mein erster Gedanke war, warum nicht
sowas wie eine Fernbedienung "kopieren". Ok, ihr sollt eine Power-Led
als Sender benutzen, aber das widerspricht noch nicht dem Prinzip
"Fernbedienung". Hier gibts bewährte integrierte Bausteine, die nicht
die Welt kosten und dir ein sauberes Nutzsignal für den Controller
bereit stellen.
Zweiter Gedanke, wenn du eh die Übertragungsraten kennst, dann stell
doch deinen Empfänger drauf ein. Etwa so, dass du ein "schlaues"
Übertragungsprotokoll bastelst, das dir zuallererst die aktuelle
Übertragungsfrequenz extrahiert und dann weißt du, in welchem Raster die
Nutzdaten kommen müssen. Mit einem simplen Schmitt-Trigger mit
einstellbarer Schaltschwelle und Hysterese, sollte der Controller die
Nutzdaten mit einer erträglichen Fehlerrate berechnen können. Vor allem
kann er Störungen wegen der bekannten Übertragungsfrequenz relativ gut
erkennen. Übrigens bringt der Manchester-Code genau das mit, weil der
Flankenwechsel immer entweder mit Clock-Frequenz oder der halben
Clock-Frequenz erfolgt.
Mein kleines Fazit: erst mal ohne große Filterei an der Software
spielen...
Gruß und viel Erfolg, Rainer
Rainer V. schrieb:> Und obwohl du noch nicht> gesagt hast, was für Daten da übertragen werden sollen,
Die Daten können verschiedenes sein: Zum Beispiel Strings oder Bitmaps.
Rainer V. schrieb:> Mein erster Gedanke war, warum nicht> sowas wie eine Fernbedienung "kopieren".
Inwiefern meinst du das? Denn die LED muss ja immer noch durchgägnig mit
der gleichen Helligkeit leuten, egal ob Daten übertragen werden oder
nicht.
Rainer V. schrieb:> Mit einem simplen Schmitt-Trigger mit> einstellbarer Schaltschwelle und Hysterese, sollte der Controller die> Nutzdaten mit einer erträglichen Fehlerrate berechnen können.
Könnte hier nicht die Überlagerung durch andere Signale zu groß werden,
um das Signal zu erkennen?
Wie gesagt läuft die Erkennung bisher über Interrupts, was das Ganze
sehr einfach macht, da man einfach die Zeiten mit der des vorherigen
Interrupts vergleichen kann und das Signal so validieren kann. (Bisher
schmeiße ich noch alles weg, wenn ein ungültiges Signal kommt)
JL Euler schrieb:> Inwiefern meinst du das? Denn die LED muss ja immer noch durchgägnig mit> der gleichen Helligkeit leuten, egal ob Daten übertragen werden oder> nicht.
Na dann schick doch immer "Null" bis eine "Eins" das Datenpaket
ankündigt...oder so ähnlich... Ich habe allerdings keine Ahnung, ob ein
Wechsel von z.B. 500Hz auf 250Hz irgendwie die Helligkeit der Led
deutlich verändern würde. Denkbar wäre ja auch, einen Träger mit der
entsprechenden Frequenz einfach zu modulieren. Auch das sollte vom
Controller gut erkannt werden können und bringt vielleicht eine noch
stabilere Helligkeit.
Gruß Rainer
Nach einem Zwischenprojekt bin ich nun wieder hier angekommen.
Wir haben derzeit folgende Ideen:
- Weiter an einem einfachen, günstigen und dennoch guten Filtersystem
basteln
- Einen billigen Mikrocontroller zur Filterung mit Software nutzen,
damit man dort am Ende wieder Signale ausgeben kann, die vom
eigentlichen Controller als Interrupts erkannt werden können
- Einen günstigen Filterbaustein finden und integrieren
Rainer V. schrieb:> Denkbar wäre ja auch, einen Träger mit der> entsprechenden Frequenz einfach zu modulieren.
Wie würde man hier konkret vorgehen? Mit Modulationen hatte ich bisher
noch weniger zu tun als mit dem, was ich hier mache.
Rainer V. schrieb:> Na dann schick doch immer "Null" bis eine "Eins" das Datenpaket> ankündigt...oder so ähnlich...
Genau das tue ich zurzeit.
Rainer V. schrieb:> Ich habe allerdings keine Ahnung, ob ein> Wechsel von z.B. 500Hz auf 250Hz irgendwie die Helligkeit der Led> deutlich verändern würde.
Man sieht bei einer Sendefrequenz von 1kHz kleine Unterschiede (auch
wenn das eigentlich zu schnell sein sollte)
Ich bin für eure Vorschläge und Tipps offen, warne aber vor, dass ich
mich möglicherweise nicht gut auskennen werde.
Nochmal eine kurze Zusammenfassung des Projekts:
Mit einer High-Power LED (1 Watt) soll von einem Mikrocontroller zu
einem anderen Daten mit sichtbarem Licht übertragen werden. Die Art von
Daten ist hier ziemlich austauschbar und soll Dinge wie Strings und
Bitmaps enthalten.
Die Übertragung soll mit Manchester-Codierung stattfinden, damit die LED
immer einen Duty-Cycle von 50% hat und somit gleich hell leuchtet.
Die Frequenzen, die zur Übertragung genutzt werden sollen sind 500Hz,
1kHz, 2kHz, 4kHz und 10kHz.
Durch andere Lichtquellen wie die Sonne, gewöhnliche LED Lampen und
Leuchtstoffröhren kommen hier Störsignale in Form eines Gleichanteils
sowie Frequenzen bei 50-100Hz und 30-40kHz hinzu, die heraus gefiltert
werden müssten, um eine zuverlässige Erkennung zu gewähren.
Beim Empfänger wird das Licht durch eine Fotodiode empfangen, soll dann
gefiltert werden und wird schließlich vom Mikrocontroller mittels
Interrupts erkannt.
Ich würde gerne bei der Interrupt-basierten Erkennung bleiben, da sie
einfach ist und eine einfache Statemachine genutzt werden kann, um das
Signal zu decodieren.
Der Mikrocontroller hat 3 Timer zur Verfügung. Der Erste wird oft von
Libraries genutzt und da das Board dazu gedacht ist, selbst Projekte
damit zu realisieren (die evtl andere Libraries brauchen) würden wir
diesen gerne unbenutzt lassen. Der zweite Timer wird derzeit von uns mit
einer Library genutzt, um die Daten in gleichmäßigen Zeitabständen immer
wieder zu senden. Der Dritte wird zur eigentlichen Übertragung des
Signals genutzt.
Die Filterschaltung muss möglichst billig sein, da wir nur ein stark
begrenztes Budget haben. Die Kosten sollten sich idealerweise auf
höchstens 10 bis 15€ belaufen.
Vielen Dank noch einmal
Hallo, nachdem ihr euch also auf das Problem "Filter" eingeschossen
habt, wäre es vielleicht sinnvoll, mal Sequenzen des empfangenen
Manchester-Code aufzunehmen, damit man ein Gefühl dafür bekommt, wie gut
oder schlecht der Empfang überhaupt ist!
Gruß Rainer
Moin,
JL Euler schrieb:> Wie würde man hier konkret vorgehen? Mit Modulationen hatte ich bisher> noch weniger zu tun als mit dem, was ich hier mache.JL Euler schrieb:> Ich bin für eure Vorschläge und Tipps offen, warne aber vor, dass ich> mich möglicherweise nicht gut auskennen werde.
Das sind und bleiben halt ziemlich schlechte Voraussetzungen, fuer das
was du vorhast. Ich mein' - was soll man einem vorschlagen, der eine
Herztransplantation machen will, sich aber moeglicherweise mit Chirurgie
nicht gut auskennen wird?
JL Euler schrieb:> Die Frequenzen, die zur Übertragung genutzt werden sollen sind 500Hz,> 1kHz, 2kHz, 4kHz und 10kHz.
Moeglicherweise vereinfacht es die Filter, wenn du dich vorher auf
eine Frequenz festlegst.
Gruss
WK
frequenz gleich lassen und in den Phasensprüngen die Amplitude
runtermodulieren (fenstern)
(wie zB. bei PSK31).
Da gibt es Modulatoren und demodulatoren hinreichend beschrieben und
hohe Spektren weisst das Nutzsignal auch nicht auf.
Wäre das 'ne Idee? So kämst Du mit dem Filter viel besser klar.
Seite 6:
http://www.arrl.org/files/file/Technology/tis/info/pdf/x9907003.pdf