Hallo zusammen!
Ich bastle gerade an einer Schaltung (Bastelprojekt) und stehe vor einem
Problem mit einem spannungsgeregelten Verstärker der eine konstante
Phasenverschiebung aufweisen soll.
Zum Gesamtaufbau:
Ein FPGA erzeugt über eine LED kurze Lichtimpulse (ca. 150ns Länge),
diese werden von einer Photodiode empfangen. Der Abstand zwischen LED
und Photodiode ist variabel und soll gemessen werden. Maximalabstand
30cm, Auflösung 1cm oder besser. Der Wechselanteil des Stroms der
Photodiode wird verstärkt und per Komparator mit einer Schwellspannung
verglichen. Beim Aussenden des Lichtpulses hat der FPGA einen Timer mit
10ns Auflösung gestartet.
Der Zählerstand entspricht der groben Dauer der Lichtlaufzeit. Damit
kann man natürlich keine 1 cm Auflösung erreichen. Daher wird dieser
Ablauf nicht nur einmal sondern öfters durchgeführt und die LED nicht
sofort sondern nach einer zufälligen Zeit in den 10 ns bestromt
(Unterabtastung).
Das ganze funktioniert mit einer elektrischen Direktverbindung vom
Ausgang FPGA zum Komparator einwandfrei.
Zum Problem:
Wenn der Abstand zwischen LED und Photodiode größer wird, dann nimmt die
Lichtintensität und der Photostrom ab. Durch die geringere Amplitude hat
der Verstärker eine andere Phase, das Signal wird also verschoben und
die Messung verfälscht. Ich habe in LTSpice versucht, eine variable
Abschwächung mit den Dioden D2 und D3 einzubauen, V_Gain ist die
Steuerspannung für die Abschwächung und würde später so geregelt werden,
dass die Ausgangsamplitude unabhängig vom Photostrom konstant ist.
Allerdings bringen mir die zwei Dioden auch frequenzabhängige
Phasenverschiebungen ein.
Wie kann ich die Amplitude regeln ohne die Phase frequenzabhängig zu
ändern?
Gruß
Peter
Geht es nicht um Rechteckimpulse? Bei denen ist die Verzerrung ja nicht
wirklich relevant, wenn es nur um die Flanken geht. Daher ließe sich
doch ordentlich verstärken, inkl. Übersteuerung, um nur die Flanken
(Schmitt-Trigger) zu verarbeiten? (Automatic Gain Control ist eher was
für Audio!?)
Boris O. schrieb:> Geht es nicht um Rechteckimpulse?
Eben. Es kann also sein, dass bei größerer Entfernung das Rauschsignal
im Verhältnis zum Nutzsignal ansteigt (Rauschspannungsabstand).
Peter schrieb:> Ein FPGA erzeugt über eine LED kurze Lichtimpulse (ca. 150ns Länge),> diese werden von einer Photodiode empfangen. Der Abstand zwischen LED> und Photodiode ist variabel und soll gemessen werden. Maximalabstand> 30cm, Auflösung 1cm oder besser.
Und wie willst Du den Abstand ermitteln?
Lichtgeschwindigkeit ist ein Begriff?
Mani W. schrieb:> Und wie willst Du den Abstand ermitteln?>> Lichtgeschwindigkeit ist ein Begriff?
Ooch, Zeitmessungen mit einer Genauigkeit im Pikosekundenbereich
macht ein Bastler doch mit links. :-)
Mani W. schrieb:> Und wie willst Du den Abstand ermitteln?>> Lichtgeschwindigkeit ist ein Begriff?
Jeder Laserentfernungsmesser aus dem Baumarkt bekommt das hin,
allerdings messen die Dinger Phasenverschiebungen.
Boris O. schrieb:> Geht es nicht um Rechteckimpulse? Bei denen ist die Verzerrung ja nicht> wirklich relevant, wenn es nur um die Flanken geht. Daher ließe sich> doch ordentlich verstärken, inkl. Übersteuerung, um nur die Flanken> (Schmitt-Trigger) zu verarbeiten? (Automatic Gain Control ist eher was> für Audio!?)
Ich habe schon versucht mit Übersteuerung zu arbeiten. Allerdings
verhält sich der Verstärker bei unterschiedlichen Eingangspegeln (trotz
übersteuertem Ausgang) leicht unterschiedlich: Die Ausgangsflanke kommt
zeitlich verschoben an. Es geht nur um Nanosekunden oder Bruchteile
davon, aber eine Nanosekunde bedeutet den kompletten Messbereich von
30cm.
Ich habe auch schon versucht, die Photodiode mit einem höheren
Lastwiderstand zu betreiben um eine höhere Spannung zu erhalten. Leider
wird sie dadurch langsamer, und die Intensität spielt wieder rein.
Harald W. schrieb:> Mani W. schrieb:>>> Und wie willst Du den Abstand ermitteln?>>>> Lichtgeschwindigkeit ist ein Begriff?>> Ooch, Zeitmessungen mit einer Genauigkeit im Pikosekundenbereich> macht ein Bastler doch mit links. :-)
Wenn die LED weiter vom Empfänger weg ist, kommt der Lichtimpuls später
an. Bei 30 cm Maximalabstand also 1 ns. 1 cm Auflösung entspricht 33 ps.
Diese Zeiten passen erstmal nicht zur Zählerauflösung von 10 ns da sie
viel kleiner sind. Da ich aber beliebig viele Lichtpulse sende und die
einzelnen Pulse zufällig zwischen 0 und 10 ns verzögere, kann ich
Oversampling anwenden.
Angenommen, ich sende 1000 Pulse und hätte gar keine Verzögerung, dann
würde ich nur den Timerwert 1 erhalten, da alle Pulse im ersten
Timerintervall von 10ns landen. Wenn es aber eine Verzögerung von 1 ns
gibt, dann landen ca 90% der Pulse im ersten Intervall und 10% im
zweiten. Bei einer Verzögerung von 2 ns landen 80% im ersten Intervall
und 20% im zweiten und so weiter.
Hier noch die Theorie im Spannungsbereich statt im Zeitbereich:
http://www.atmel.com/images/doc8003.pdf
Interessant ist die Tabelle auf Seite 8, letzte Zeile: Mit einem
Oversamplingfaktor von 4096 (=4096 Lichtpulse) erhöhe ich die Auflösung
des Zählers um 6 Bit und komme so auf ungefähr 16ps Auflösung.
Ich bezweifle, dass weiteres Oversampling noch was bringt, da ja auch
der Quarz/PLL genau genug sein müssten.
Das ganze habe ich schon aufgebaut mit einer elektrischen Verbindung
zwischen dem FPGA und dem Komparator: Ich konnte die Länge von 1cm, 7cm,
20cm und 200cm langen Leitungen elektrisch über die Laufzeit bestimmen
:-)
Wolfgang schrieb:> Mani W. schrieb:>> Und wie willst Du den Abstand ermitteln?>>>> Lichtgeschwindigkeit ist ein Begriff?>> Jeder Laserentfernungsmesser aus dem Baumarkt bekommt das hin,> allerdings messen die Dinger Phasenverschiebungen.
Du meinst, ich sollte die LED zum Beispiel mit einem Sinus modulieren
und im Empfänger die Phase dazu bestimmen? Gibt es dort nicht das
gleiche Problem? Eine andere Intensität verschiebt die Phase der
Empfangsstufe obwohl die Verzögerung konstant ist.
Die bereits erwähnten Laserentfernungsmesser aus dem Baumarkt können das
auf relativ einfache Weise, also ist das Problem mit der Modulation als
gelöst zu betrachten.
Die Distometer der Theodolite können das noch besser, allerdings mit
mehr Aufwand, dann aber auf Millimeter genau.
Gegen die starken Intensitätschwankungen hilft optische Abbildung.
Sowohl Sender als auch Empfänger im oder kurz hinter dem Brennpunkt
einer Optik anbringen.
Gruß - Werner
Peter schrieb:> Angenommen, ich sende 1000 Pulse und hätte gar keine Verzögerung, dann> würde ich nur den Timerwert 1 erhalten, da alle Pulse im ersten> Timerintervall von 10ns landen. Wenn es aber eine Verzögerung von 1 ns> gibt, dann landen ca 90% der Pulse im ersten Intervall und 10% im> zweiten. Bei einer Verzögerung von 2 ns landen 80% im ersten Intervall> und 20% im zweiten und so weiter.>> Hier noch die Theorie im Spannungsbereich statt im Zeitbereich:> http://www.atmel.com/images/doc8003.pdf
Mein Gefühl sagt mir, dass das wohl nicht funktionieren wird, weil sich
dein Signal (=Abstand) nicht mindestens ein Bit Rauschen aufweist
(30cm).
Im Dokument steht dazu
" criteria for a successful enhancement of the resolution is that the
input signal has to vary when sampled. This may look like a
contradiction, but in this case variation means just a few LSB. The
variation should be seen as the noise-component of the signal. "
Mike H schrieb:> Mein Gefühl sagt mir, dass das wohl nicht funktionieren wird,...
Er schreibt aber doch (und das finde ich interessant), dass Messungen
auf einer Leitung (also ohne das Problem der entfernungsabhängigen
Signalamplitude) erfolgreich waren.
Werner H. schrieb:> Die bereits erwähnten Laserentfernungsmesser aus dem Baumarkt können das> auf relativ einfache Weise, also ist das Problem mit der Modulation als> gelöst zu betrachten.> Die Distometer der Theodolite können das noch besser, allerdings mit> mehr Aufwand, dann aber auf Millimeter genau.>> Gegen die starken Intensitätschwankungen hilft optische Abbildung.> Sowohl Sender als auch Empfänger im oder kurz hinter dem Brennpunkt> einer Optik anbringen.
Hmmmm... Das hört sich gut an. Leider bin ich in der Optik nicht so
bewandert. Ich habe aber Linsen da, damit werde ich mal experimentieren.
Bernd K. schrieb:> Es gibt auch fertige Bauteile dafür, die haben das alles schon halbwegs> in den Griff bekommen, z.B.
Es stimmt, dass es solche Produkte bereits gibt (wie auch den schon
benannten Laserentfernungsmesser aus dem Baumarkt). Ich möchte es gerne
nachbauen und schauen wie weit ich komme.
> https://www.espros.com/portfolio_item/epc600/
Interessanter Chip! Das Datenblatt gibt leider nicht so genau Auskunft,
wie gemessen wird. Ich vermute aber ähnlich wie in Wikipedia
beschrieben:
https://en.wikipedia.org/wiki/Time-of-flight_camera#PrincipleMike H schrieb:> Mein Gefühl sagt mir, dass das wohl nicht funktionieren wird, weil sich> dein Signal (=Abstand) nicht mindestens ein Bit Rauschen aufweist> (30cm).>> Im Dokument steht dazu>> " criteria for a successful enhancement of the resolution is that the> input signal has to vary when sampled. This may look like a> contradiction, but in this case variation means just a few LSB. The> variation should be seen as the noise-component of the signal. "
Das Rauschen füge ich künstlich hinzu: Der Timer hängt einem Quarz/PLL
mit 100MHz, ist also relativ genau und stabil. Ein Triggersignal startet
den Timer, aber die LED wird nicht sofort sondern erst nach einer
zufälligen Zeit (etwa 0ns - 25ns) eingeschaltet. Realisiert wird das
durch einen zweiten Oszillator (Ringoszillator) der mit etwa 40 MHz
läuft. Erst wenn beim zweiten Oszillator eine positive Flanke kommt wird
die LED eingeschaltet. Da die zwei Oszillatoren nicht synchronisiert
sind, passiert das zu einem zufälligen Zeitpunkt.
Horst S. schrieb:> Muss man da vielleicht die Kapazitäten der Dioden kompensieren?>
(http://www.instructables.com/id/DPScope-SE-the-simplest-real-oscilloscopelogic-/)
>> (Schuss ins Blaue, ich weiß)
Ich glaube, das ist ein guter Ansatz (interessantes Projekt btw). Die
Dioden verändern ja je nach DC-Spannung ihre Kapazität. Aber wie bekomme
ich Ausgleichskapazitäten in Abhängigkeit von V_Gain rein? Irgendwie
müssten die gleichen Dioden nochmals rein, nur umgekehrt?
Hmmm, bin nur Laie bei dem ganzen Analogkram, muss daher mal fragen:
VGain steht bei Deinem Schaltplan an der Gleichspannungsquelle. Ich
verstehe es so, dass VGain nur ein fester Offset ist, der das
Eingangspotential der Diode anhebt, so dass sie durchschalten kann.
Inwieweit ist VGain überhaupt variabel zu behandeln?
Horst S. schrieb:> Hmmm, bin nur Laie bei dem ganzen Analogkram, muss daher mal fragen:>> VGain steht bei Deinem Schaltplan an der Gleichspannungsquelle. Ich> verstehe es so, dass VGain nur ein fester Offset ist, der das> Eingangspotential der Diode anhebt, so dass sie durchschalten kann.
VGain muss höher als die Flussspannung sein, dass die Dioden überhaupt
leiten, das ist richtig. Darüber hinaus verändert sich mit VGain der
Diodenstrom und damit die Abschwächung des Signals. Mit dem DC-Strom
verändert sich der differenzielle Widerstand der Dioden, daher die
unterschiedliche Abschwächung.
> Inwieweit ist VGain überhaupt variabel zu behandeln?
Meine Idee ist es, am Ausgang des letzten Transistors die Amplitude des
Signals zu detektieren und damit VGain zu steuern. Dadurch wollte ich
eine konstante Amplitude des Signals und somit eine konstante
Phasenverschiebung des Verstärkers erreichen.
Wenn Du:
- VGain steuerst
- VGain lt. Diagramm die Größe ist, die Deine Signalverzögerung
beeinflusst.
...sind dann nicht alle Variablen Deines Systems bekannt? Kannst Du dann
nicht eine Korrektur der Distanz in Abhängigkeit von VGain
softwareseitig implementieren?
Horst S. schrieb:> ...sind dann nicht alle Variablen Deines Systems bekannt? Kannst Du dann> nicht eine Korrektur der Distanz in Abhängigkeit von VGain> softwareseitig implementieren?
Ja, das würde gehen. Ich hatte gehofft, es ohne Kalibrierung
hinzubekommen.
Vielen Dank für eure Hilfe!
Selbst wenn's nicht mit LED läuft, kannst Du ja mal vielleicht ne
Beschreibung der Leitungslängenmessung ins Projekte-Forum setzen.
Das würde mich schon interessieren, was da so bezüglich
Laufzeitmessungen geht.
Elektronisch die Verstärkung zu verändern kann immer auch
Phasenverschiebungen / Verzögerungen rein bringen, das wird zumindest
schwer und wird vermutlich Korrekturfaktoren rein bringen. Man kann eher
die Verluste Optisch anpassen, etwa über einen verstellbaren Spalt, der
bei geringem Abstand die Intensität reduziert.