Kis intenzitású jelek mérése

A Fizipedia wikiből

See the English version at the bottom of the page.

Tartalomjegyzék

Bevezetés


A mérési gyakorlat célja alacsony intenzitású jelek mérésére alkalmas technika elsajátítása. A gyakorlat során egy LED fényintenzitását mérjük meg egy fényelem segítségével, a lock-in detektálási elv felhasználásával. Kikapcsolt LED mellett a fotodetektor jele állandó, a háttérvilágításból származó fénynek felel meg. Ha a LED-et négyszögjellel hajtjuk meg, a fotodetektorra eső fénye a fotodetektor jelében modulációt hoz létre (1. ábra). Ebből a periodikusan modulált jelből szűrjük ki a LED-et meghajtó feszültségjel frekvenciájával megegyező frekvenciájú komponenst, és határozzuk meg annak amplitúdóját. Ezt a következőképpen valósíthatjuk meg: a fényelemen mért feszültségjelet összeszorozzuk a LED-et meghajtó feszültségjellel, majd számítjuk az így kapott jel átlagát. A LED-ből származó fényintenzitásnak megfelelő moduláció amplitúdója az alábbi képlettel határozható meg:

\[A_{LED}=(2\cdot S_\mathrm{mean})/A_g ,\]

ahol \setbox0\hbox{$S_\mathrm{mean}$}% \message{//depth:\the\dp0//}% \box0% a számolt átlagérték, \setbox0\hbox{$A_g$}% \message{//depth:\the\dp0//}% \box0% a gerjesztő jel amplitúdója. Abban az esetben, ha a mért fotofeszültség jelhez a LED-et meghajtó jel frekvenciájától különböző frekvenciájú zaj adódik, a meghajtó jel és a mért fotofeszültség szorzása után ez kiátlagolódik.

Signals.png
1. ábra. \setbox0\hbox{$A_g$}% \message{//depth:\the\dp0//}% \box0% a LED-et meghajtó feszültség amplitúdója, \setbox0\hbox{$B$}% \message{//depth:\the\dp0//}% \box0% a háttér világításnak megfelelő fotofeszültség, amit akkor mérünk, amikor a LED nem világít, valamint \setbox0\hbox{$L$}% \message{//depth:\the\dp0//}% \box0% a LED világítása közben mért fotofeszültség. A LED fényintenzitásának megfelelő fotofeszültség \setbox0\hbox{$A_{LED} = L - B$}% \message{//depth:\the\dp0//}% \box0%.


Megvalósítás

A LED-et a myDAQ1 mérés során ismertetett módon, egy 10 kOhm-os soros ellenálláson keresztül kapcsoljuk a mérőkártya analóg feszültség kimenetére. A fényelem feszültségét a mérőkártya analóg feszültség bemenetén mérjük. A terem világítása által keltett fotofeszültség néhány tized voltos, ehhez adódik hozzá a LED fényintenzitásából származó járulék. A LED fényerejét a LED-en folyó árammal tudjuk változtatni, a fényelemre eső intenzitást pedig a fényelem pozícionálásával szabályozhatjuk. A LED-ből kollimált fénynyaláb lép ki, amennyiben nagy jelet szeretnénk mérni, akkor helyezzük a fényelemet és a LED-et egymással szemben. Kis intenzitás legegyszerűbben úgy érhető el ha a fényelemet úgy pozícionáljuk, hogy az a kilépő fénynyalábbra merőlegesen, a LED oldalára nézzen.

Elsőként használjuk az NI MAX programot a mérési elrendezés tesztelésére. A LED-et meghajtó feszültség kimeneten állítsunk be egy szinuszos jelet, melynek amplitúdója nagyobb mint a LED nyitó feszültsége, így minden periódusban felvillan a LED. Pozícionáljuk a fényelemet a LED-el szemben, ekkor a mért fotofeszültség jelében megjelennek a LED fényintenzitásának megfelelő kvázi négyszögjel. Mivel a LED minden periódusban be- és kikapcsol, így a LED fényintenzitásából származó fotofeszültség megegyezik a pár tized voltos alapvonalra (háttérvilágításra) szuperponált négyszögjel amplitúdójával. Ezután csökkentsük az intenzitást a fényelem pozíciójának változtatásával. A LED fényerejét mindaddig mérni tudjuk, míg a négyszögjel amplitúdója nagyobb a háttér világításból származó alapvonal zajánál.

LED meghajtás

A LED-et meghajtó áramkör kapcsolási rajzát a 2. ábrán a "LED drive circuit" alatt láthatjuk. A myDAQ1 méréshez hasonlóan, az analóg kimenetet használva, egy 10 kOhmos ellenálláson keresztül hajtjuk meg (a 10 kOhmos ellenállás színkódja: barna-fekete-narancs-arany). A kiadott feszültséget az A0-s analóg bemeneti csatornán mérjük.

Fotofeszültség detektálása

A fotodetektor kimeneti ellenállása viszonylag nagy, ezért ha közvetlenül kapcsolnánk az analóg bemenetre, a myDAQ mérőkártya multiplexelt bemenetei között áthallás alakulna ki. Hogy ezt elkerüljük, egy feszültségkövető áramkört valósítunk meg egy TL072CP típusú műveleti erősítővel. A 2. ábrán a "Sensing circuit" rész mutatja, hogyan valósítsuk ezt meg, alatta pedig az TL072CP integrált áramkör lábkiosztását találjuk. A műveleti erősítőnek a szimmetrikus, +-15 V-os tápfeszültséget a myDAQ +15 és -15 V-os kimenetéről vesszük. A szenzort a földre és a műveleti erősítő nem invertáló bemenetére kötjük. A feszültségkövetést a műveleti erősítő invertáló bemenetének a kimenethez való kapcsolásával érjük el. A kimenetet a myDAQ AI1+ bemenetére kötjük, az AI1- lábat pedig földeljük. A műveleti erősítő kimenetére kötött 100 Ohmos ellenállás színkódja barna-fekete-barna-arany.

Chopper circuit.png
2. ábra. A mérés áramköri megvalósítása: LED meghajtó áramkör, fotofeszültség detektálása feszültségkövető áramkörrel, és a TL072CP műveleti erősítő lábkiosztása.

A mérőkártya programozása

A myDAQ1 mérés során megismert módon Task-okat kell létrehoznunk a feszültség bemenet és kimenet kezelésére. A mérés pontos időzítéséhez, valamint nagy mintavételi frekvencia eléréséhez (myDAQ eszközzel maximum 200 kHz) használjuk a mérőkártya belső órajelét a mintavételezés időzítésére. Ehhez a mérés vezérlésére létrehozott Task-oknak az időzítését is konfigurálni kell. Példa a bemeneti Task-ra:

InTask = new NationalInstruments.DAQmx.Task();
InTask.AIChannels.CreateVoltageChannel("myDAQ1/ai0", "", AITerminalConfiguration.Differential, -10, 10, AIVoltageUnits.Volts);
InTask.AIChannels.CreateVoltageChannel("myDAQ1/ai1", "", AITerminalConfiguration.Differential, -10, 10, AIVoltageUnits.Volts);
InTask.Timing.ConfigureSampleClock("", sampleRate, SampleClockActiveEdge.Rising, SampleQuantityMode.FiniteSamples, numSamples);
analogReader = new AnalogMultiChannelReader(InTask.Stream);
...
double[,] data = analogReader.ReadMultiSample(numSamples);

Az időzítést a fenti példa kód 4. sora állítja be, az alábbi paramétereket kell megadni:

  • A mintavétel órajelének forrása, az üres string ("") a kártya belső órajelét választja ki
  • sampleRate: Mintavételi frekvencia (1 másodperc alatt mért adatok száma)
  • Az órajel felfutó vagy lefutó élére történjen a mintavételezés
  • Időzítési mód: FiniteSamples (A mérés elindítása után a mérőkártya mintavételez numSamples db pontot, majd leáll a mérés.
  • numSamples: A mérendő / generálandó adatok száma

A kimenet esetében hasonlóan kell beállítani a generálás időzítését, de ContinuousSamples módban. Ekkor elegendő egyszer megadni a kártyának egy tömböt, ami tartalmazza a generálandó adatokat. A mérőkártya elmenti azokat egy pufferben és a tömb elemeit elkezdi generálni a kimeneten. Amikor elér a tömb végére, automatikusan visszaugrik az első elemre és folyamatosan ismételi a tömbben megadott adatokat, amíg le nem állítjuk a Task-ot.

A beolvasáshoz használj AnalogMultiChannelReader()-t.

Feladatok

  1. Készítsd el a program grafikus felületét:
    • Gombok a mérés indításához, leállításához
    • Label-ek, Textbox-ok a paraméterek állításához
    • 4 db Chart: az 1. ábrán is látható 3 mennyiség ábrázolásához (meghajtó jel, detektált jel, szorzat jel), és egy 4. grafikon a lock-in elvvel meghatározott mennyiség ábrázolásához
  2. Állítsd össze a LED meghajtó áramkört, és írd meg a hozzá tartozó kódot.
    • Az áramkört az összeállítás után teszteld NI MAX-ban, a myDAQ kártya Test paneljével. Ha működik, folytasd a munkát a C# kóddal.
    • Hozz létre egy kimeneti Task-ot az AO0-s analóg kimenet vezérléséhez. Használj folytonos, ismétlődő időzítést (SampleQuantityMode.ContinuousSamples).
    • Hozz létre egy bemeneti Task-ot, ami a meghajtó jelet fogja mérni az AI0-s bemeneten. Olvass be véges számú mintát (SampleQuantityMode.FiniteSamples). Használd az AnalogMultiChannelReader() függvényt.
    • Egy Timer segítségével ismételd a beolvasást, a mért jelet ábrázold az 1. grafikonon (hasonlóan egy oszcilloszkóp képernyőjéhez).
  3. Állítsd össze a detektálási áramkört, és írd meg a hozzá tartozó kódot.
    • Az áramkört az összeállítás után teszteld NI MAX-ban, a myDAQ kártya Test paneljével. Ha működik, folytasd a munkát a C# kóddal.
    • A már létrehozott bemeneti Task-kal olvasd be a fotodetektor jelét is. Ábrázold a 2. grafikonon.
    • Számold ki a szorzat jelet, és ábrázold a 3. grafikonon.
    • Számold ki a lock-in jelet, és ábrázold a 4. grafikonon.
  4. Írd meg a kódot, ami lehetővé teszi a mért eredmények elmentését.
  5. Változtasd a paramétereket, keress ideális működési tartományt. Milyen feltételek mellett működik jól a lock-in elv?
  6. Vizsgáld meg, hogy mekkora a háttérjel, és mi a legkisebb detektálható amplitúdó.

Megjegyzések

  • Ellenőrizd, hogy a detektort letakarva a detektált jel konstans (nem látszik benne a meghajtó jel).
  • A jelgenerátor frekvenciája és a beolvasás frekvenciája (mintavételezése) lehet különböző.
  • Négyszögjelet előállíthatsz egy 2 pontból álló jelalak ismételt kiadásával.
  • Ha szükséges, a következővel beállíthatod, hogy a nulla ne legyen mindenképpen benne az y tengely skálájában: myChart.ChartAreas[0].AxisY.IsStartedFromZero = false;, ahol a myChart a Chart neve.

Introduction


The aim of this measurement exercise is to learn a measurement technique suitable for measuring signals with low intensity. During the exercise, we are measuring the light intensity of an LED using a photo element. Similarly to the myDAQ1 exercise, the LED is connected to the analog output of the DAQ card through a 10 kOhm series resistor. The voltage of the photo element is measured with the analog input of the DAQ card. The photo voltage corresponding to the light intensity of the LED is added to the background photo voltage, which is approximately a few tens of a volt produced by the ambient light in the room. The light intensity of the LED is controlled by the current flowing through the LED, while the light intensity measured by the photo element is controlled by the relative position of the LED and the photo element. A collimated light beam exits the LED, when you want to measure a high photo voltage signal, place the photo element and the LED facing each other. The easiest way to achieve small intensity is to position the photo element looking at the side of the LED, perpendicular to the light beam exiting the LED.

Start by using the NI MAX program to test the measurement layout. Use the analog output connected to the LED to generate a sinusoidal voltage signal with an amplitude greater than the opening voltage of the LED, this way the LED will flash once in every period of the sinusoidal signal. Position the light element facing the LED, then a quasi-square signal will appear in the measured photo voltage signal, which corresponds to the LED light intensity. As the LED turns on and off in every period, the photo voltage produced by the LED is the amplitude of the square signal superimposed on the baseline corresponding to the ambient light. Then, reduce the intensity by changing the position of the light element. The brightness of the LED can be measured until the amplitude of the square signal is greater than the noise of the background. The purpose of the measurement exercise is to develop a measurement program based on the principle of Lock-in detection: from the measured photo voltage signal, it filters the component that has the same frequency as the voltage signal driving the LED and determines its amplitude. This can be accomplished by driving the LED with a square signal having an amplitude greater than the opening voltage of the LED. The voltage signal measured on the photo element is multiplied with the voltage signal driving the LED and the average of this signal is calculated. If the measured photo voltage signal contains some noise with a frequency different from the frequency of the signal driving the LED, then after multiplying the measured photo voltage signal with the drive signal the noise will average out (Figure 1).

LED chopper.png
Figure 1. \setbox0\hbox{$A_g$}% \message{//depth:\the\dp0//}% \box0% amplitude of the LED drive signal, \setbox0\hbox{$B$}% \message{//depth:\the\dp0//}% \box0% photo voltage corresponding to the ambient lights (measured when the LED is turned off), and \setbox0\hbox{$L$}% \message{//depth:\the\dp0//}% \box0% photo voltage measured when the LED is turned on. The photo voltage corresponding to the light coming from the LED: \setbox0\hbox{$A_{LED} = L - B$}% \message{//depth:\the\dp0//}% \box0%.

The amplitude of the square signal corresponding to the light intensity coming from the LED can be calculated using the formula:

\[A_{LED}=(2\cdot S_{Mean})/A_g ,\]

where \setbox0\hbox{$S_{Mean}$}% \message{//depth:\the\dp0//}% \box0% is the calculated mean value, \setbox0\hbox{$A_g$}% \message{//depth:\the\dp0//}% \box0% is the amplitude of the drive signal.


Programming the DAQ card

Similarly to the method used in the myDAQ1 exercise, Task objects has to be created for controlling the analog inputs and outputs. In this exercise we have to use the internal sample clock of the DAQ card for timing the data acqusition. This way we can achieve more accurate timing and large sample rate (up to 200 kHz with the myDAQ device). The below sample code shows, how the Timing is configured for the Task-s controlling the measurement:

InTask = new NationalInstruments.DAQmx.Task();
InTask.AIChannels.CreateVoltageChannel("myDAQ1/ai0", "", AITerminalConfiguration.Differential, -10, 10, AIVoltageUnits.Volts);
InTask.Timing.ConfigureSampleClock("", sampleRate, SampleClockActiveEdge.Rising, SampleQuantityMode.FiniteSamples, numSamples);
analogReader = new AnalogSingleChannelReader(InTask.Stream);

Timing is configured in line 3. of the above code, the following parameters are necessary:

  • Sample clock source, empty string ("") selects the internal sample clock of the DAQ card
  • Sample rate (number of samples measured/generated in 1 second)
  • Sample clock edge: sampling is performed on the Rising / Falling edge of the sample clock
  • Timing mode: FiniteSamples / ContinuousSamples
  • Number of samples measured/generated

FiniteSamples: After starting the measurement, the DAQ card measures numSamples data points, then stops the measurement.

ContinuousSamples: The DAQ card measures continuously, the measured data is stored in a buffer. We have to ensure, that the program regularly reads the data from the puffer otherwise it would fill up and the DAQ card generates an error.

In the case of the output, the timing of the Task is set up the same way. When using the output in ContinuousSamples mode, it is enough to generate an array of data once and store it in the buffer of the DAQ card. In this case, the DAQ card will continuously generate the data stored in its buffer, when it reaches the end of the array it jumps back to the first element and continues the data generation until the Task is stopped.

Exercises

  1. Develop an oscilloscope program, which operates the following way: when the user pushes the start button, it configures the DAQ card to start measuring in FiniteSamples mode with the sample rate set by the user, then it startss a timer. Read the data and plot it on a chart object in each timer tick event.
  2. Add an analoge output to the program: generate an array when starting the measurement and use the analog output in ContinuousSamples mode to continuously output the generated array.
  3. Place a checkbox on the user interface, so the user could select between constant voltage or square signal for driving the LED.
  4. In case of the square signal drive, use the Lock-in technique for determining the photo voltage corresponding to the light intensity of the LED. For this method, we need the drive signal as well, which can be measured using the second analog input of the DAQ card. Multiply the measured photo voltage signal and the drive signal and calculate the amplitude of the component that has the same frequency as the drive signal. Use a second chart object to plot the calculated amplitude with respect to the time elapsed from the start of the measurement.
  5. Examine how big is the background signal and what is the lowest amplitude that can be detected using the measurement program.