Laboration 3 Sampling, samplingsteoremet och frekvensanalys 1
1 Introduktion Syftet med laborationen är att ge kunskaper i att tolka de effekter (speglingar, svävningar) som uppkommer vid sampling av en signal med frekvensen f och samplingsfrekvensen f s. Dessutom ska laborationen ge erfarenhet av att använda ett kommersiellt datainsamlingssystem samt att använda metoder för frekvensanalys. 1.1 Förberedelseuppgifter 1. Läs Kap 9 i Elektriska mätsystem och mätmetoder 2. Läs bilaga i denna laborationsspecifikation 3. Läs specifikationerna för DAQ-enheten NI USB-6001 2 Teori 2.1 Samplingsteoremet Antag att vi samplar en periodisk signal med frekvensen f. Då gäller enligt samplingsteoremet att den minsta samplingsfrekvens (f s) som signalen måste samplas med för att det att teoretiskt skall gå att återskapa signalen, är dubbla signalfrekvensen, dvs f s 2f Den kritiska samplingsfrekvensen 2f kallas också Nyquistfrekvensen. Det räcker att välja en samplingsfrekvens motsvarande dubbla den högsta förekommande signalfrekvens för att ingen information om signalen skall gå förlorad. Exempelvis, med f s = 1kHz så måste då gälla att f < 500 Hz. 2.2 Spegling Spegling är ett fenomen som uppstår då samplingsteoremet inte är uppfyllt, dvs då f s < 2f Det kallas också vikning eller aliasing från engelskan. Om vi har spegling så kan vi inte återskapa den ursprungliga signalen från den samplade signalen. Även om den samplade signalen till utseendet är lik den ursprungliga signalen så uppträder frekvensen f som en annan felaktig frekvens istället för den riktiga. Den uppträder som en spegel (alias)-frekvens f spegel till f. Det beror på att höga frekvenser utanför intervallet (dvs över f s/2) viks in i samplingsintervallet. För enkla signaler, kan den riktiga frekvensen beräknas enligt f = f spegel + k f s k = ±1, ±2, där f s är samplingsfrekvensen och f spegel är den falska frekvensen. 2
2.3 Svävning Svävning är ett fenomen som uppkommer när signalens frekvens f närmar sig udda multiplar av halva samplingsfrekvensen, dvs (2n + 1) f s 2 n = 0, 1, 2, För att beräkna den ursprungliga signalens frekvens används sambandet f = f s 2 f sväv (om f s 2f) Där f sväv är svävningens frekvens. Detta samband gäller då samplingsteoremet är uppfyllt f s 2f dvs då det är möjligt att återskapa den ursprungliga signalen trots svävning. 3 Material I denna laboration behöver du Dator med Matlab Datainsamlingsenheten NI USB-6001 Funktionsgenerator för att generera sinussignaler 4 Uppgifter Viktigt! Spara grafer, beräkningar mm till redovisningen. Se nästa sida. 1. Sampla en symmetrisk (duty cycle = 50%) fyrkantvåg med frekvensen 100 Hz under 50 ms (5 perioder). Denna signal innehåller frekvenskomponenterna 0, 100, 300, 500, Hz. Välj tre olika samplingsfrekvenser som du tycker kan vara intressanta med tanke på samplingsteoremet, dvs så att du kan påvisa vikningseffekten. Presentera i grafer. 2. Filtrera fyrkantvågen från uppgift 1 med ett lågpassfilter med gränsfrekvens på 200 Hz. Välj här samplingsfrekvensen 2000 S/s. Presentera i samma graf signalens utseende före och efter filtret. Kommentera den filtrerade signalens utseende. 3. Gör en frekvensanalys (FFT) med Matlab på signalerna från uppgift 2. 4. Mät en sinussignal med amplituden 1 V (utan offset) för frekvenserna f = 10, 100, 490, 510, 990, 1000, 1010 Hz. Här används hela tiden samplingsfrekvensen 1000 S/s. 5. Tolka graferna så att det är uppenbart varför det ser ut som det gör. Beräkna insignalens frekvens ur grafen för f = 490 respektive 1010 Hz. Jämför genom att använda dig av frekvensanalys (FFT). 3
5 Redovisning Redovisa enligt nedanstående punkter i samband med laborationstillfället eller enligt lärarens anvisningar. I det fallet att laborationen skall redovisas med en skriftlig rapport så gäller följande: Redovisa hur du har löst uppgiften samt det som efterfrågas i nedanstående punkter. Rapporten skall vara så detaljerad att en person på din egen kunskapsnivå kan reproducera ditt arbete. Uppgift 1: Visa grafer på den samplade signalen för de tre valda samplingsfrekvenserna med förklaring och enheter på axlarna. Påvisa samplingsteoremet och vikningseffekten. Uppgift 2: Visa lämpliga grafer med förklaring och enheter på axlarna. Uppgift 3: Visa grafer på amplitudspektra (amplitud mot frekvens) från frekvensanalysen med förklaring och enheter på axlarna. Signalernas frekvenser ska framgå. Uppgift 4: Graf på samplade signalen då f s = 1000 S/s och då f = 490 respektive 1010 Hz. Uppgift 5: Den teoretiska beräkningen av signalens verkliga frekvens ur graferna för f = 490 respektive 1010 Hz. (Man kan utgå från att den valda samplingsfrekvensen är exakt medan däremot signalgeneratorn inte visar helt rätt). Visa grafer från frekvensanalysen och jämför med beräkningen. Ange enheter på axlarna. 4
Bilagor Bilaga 1. Matlab-kod för kommunikation med DAQ-enhet Nedanstående Matlab-kod används för att kommunicera med DAQ-enheten NI USB-6001. Matlabkod som börjar med tecknet % är kommentarer och exekveras inte då scriptet körs. % Kolla vilka datainsamlingsenheter som finns tillgängliga. % Detta behöver vanligtvis inte köras, men kolla första gången % vilken device id enheten har. % Normalt borde det vara Dev1. daq.getdevices % Skapa en datainsamlings-session daqsession = daq.createsession('ni'); % Specificera en kanal för datainsamling % Ange enhet, kanaltyp, samt mätparameter % daqsession.addanaloginputchannel('dev1','ai0','voltage'); % Detta kan också göras på det följande sättet: [ch,idx] = addanaloginputchannel(daqsession,'dev1','ai0','voltage'); % Då kan vi ändra mellan single ended (jord referens) eller % differential ended. Default är differential ended. % ch.terminalconfig = 'SingleEnded'; % koppla mellan ai0 och jord. % ch.terminalconfig = 'Differential'; % koppla mellan ai0 och ai4 % Konfigurera egenskaper (antal sampel, total mättid, % samplingsfrekvens). Två av dem behöver bestämmas. daqsession.numberofscans = 100; daqsession.durationinseconds = 0.1; daqsession.rate = 1000; % Kör datainsamlingen [data,time] = daqsession.startforeground(); % Plotta data mot tiden figure;plot(time,data,'.-') % Koppla från enheten och avsluta datainsamlingen daqsession.release(); delete(daqsession); clear daqsession; 5
Bilaga 2. Beräkna frekvensen hos den samplade signalen Man kan beräkna frekvensen hos den samplade periodiska signalen genom att räkna antalet sampel under en signalperiod och därefter beräkna kvoten f = samplingsfrekvens antal sampel per sekund = antal sampel per period antal sampel per period Då får man frekvensen eftersom den kan betraktas som antalet svängningar (perioder) per sekund. Bilaga 3. Exempel: Matlab-kod för frekvensanalys av en testsignal Här följer ett exempel på Matlab-kod för frekvensanalys av en testsignal. fs = 1000; % samplingsfrekvens N = 100; % antal sampel dt = 1./fs; % sampeltidsintervall T = N.*dt; % total tid t = 0:dt:(N-1).*dt; % tidsvektor u = 5*sin(2*pi*100*t+1); % testsignalen figure(1); plot(t,u) xlabel('tid (s)'); ylabel('spänning (V)'); df = fs/n; % frekvensupplösningnen 1/T f = 0:df:(N-1).*df; % frekvensvektor Uf = fft(u); % FFT Uf_belopp = abs(uf); % beloppet % Frekvensspektra för frekvenser upp till fs/2. % y-axeln justeras för att visa korrekt signalnivå. figure(2); plot(f(1:n/2),2/n*uf_belopp(1:n/2),'.-'); xlabel('frekvens (Hz)'); ylabel('spänning (V)'); 6