Beruflich Dokumente
Kultur Dokumente
Fakulät IV
Institut für Energie und Automatisierungstechnik
Fachgebiet Elektronische Mess- und Diagnosetechnik
Versuchsprotokoll
Versuch 8
Digitale Messkette 2
1 Einleitung 1
2 Theoretische Aufgaben 1
2.1 Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.2 Entwurf eines Aliasing-Filters . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.3 DNL eines Analog-Digital-Umsetzers . . . . . . . . . . . . . . . . . . . . . 1
2.4 INL eines Analog-Digital-Umsetzers . . . . . . . . . . . . . . . . . . . . . . 2
2.5 Störspannungsunterdrückung . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.5.1 Vorteil des Dual-Slope-Integrierers . . . . . . . . . . . . . . . . . . . 2
2.5.2 Berechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Praktische Aufgaben 4
4 Praktische Aufgaben 4
4.1 Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.2 Aliasingfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3 ADU-Histogramm-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.4 Störspannungsunterdrückung . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 Zusammenfassung 13
6 Verwendeter Code 14
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
1 Einleitung
2 Theoretische Aufgaben
2.1 Aliasing
Wie muss ein Aliasing-Filter entworfen werden? Warum spielt dabei auch die
Auflösung (Bitanzahl) des AD-Umsetzers eine Rolle ?
Es muss gelten
f0
A( ) ≥ 20 ∗ log(2N − 1)
2
und
ω0 ≥ 2 ∗ ωm
Da die Auflosung des ADU die Abtastfrequenz beeinflust spielt es eine wichtige Rolle . Es
gilt fur die Filterordnung
∆A A(t) f0 − A(t)g
2
m= = f0
∆f log10 ( f2g )
Was ist die differentielle Nichtlinearität eines AD-Umsetzers und wie kann sie
messtechnisch bestimmt werden?
1
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
Die differenzielle Nichtlinearität ist die Abweichung der Stufenbreite von ihrem idealen Wert
(1 LSB). Übersteigt die differentielle Nichtlinearität an einer Quantisierungsstufe den Wert
eines LSB, so wird der zugehörige Ausgangswert nicht ausgegeben und als ”missing co-
de”bezeichnet.
Hauf igkeit(Stuf e)
DN L = −1
Hauf igkeit(soll)
2.5 Störspannungsunterdrückung
Welchen Vorteil hat der Dual-Slope-Integrierer, bei der Verarbeitung eines der
Messgröße Ux überlagertem Störsignals us?
Der Dual-Slope-Wandler ist relativ langsam (typ. 20 ms pro Umwandlung) und wird vor al-
lem in Digitalvoltmetern eingesetzt. Durch das Verfahren heben sich Messfehler, die durch
Bauteiltoleranzen verursacht werden, auf, wodurch der Dual-Slope-Konverter gute Auflösung
und Linearität (16 Bit und mehr) bietet. Trotzdem ist er preisgünstig und außerdem leicht
anzuwenden, da er aufgrund seiner integrierenden Eigenschaften Artefakte bei der Messung
unterdrückt
Durch den Dual-Slope-Integrierer konnte die Storspannungsdampfung sehr gut erzielt werden.
Ausserdem die Fehler,die entstehen , werden verringert .
Wie kann die Integrationszeit Ti für die 1. Phase des Dual-Slope-Integrierers be-
stimmt werden, sodass idealerweise das Störsignal vollständig unterdrückt wird?
1
R Ti
U1 (Ti ) = − RC t0
Ue
2
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
2.5.2 Berechnung
Bestimmen Sie für Fall 1 und Fall 2 aus den Mittelwert des Storsignalsus und die
Störspannungsdämpfung S.
uS
s = −20log( )
u
cS
mit
cS ∗ si(π ∗ fs ∗ Ti ) ∗ sin(π ∗ fs ∗ Ti + φ)
uS = u
Fall 1 ;
fs ∗ Ti = 1.5
φ=π
Der Mittelwert des Storsignals :
Die Storspannungsdampfung :
0.063
s = −20log( ) = 13, 46dB
0.03
Fall 2 :
fs ∗ Ti = 2
φ=0
Der Mittelwert des Storsignals :
cS ∗ si(π ∗ 2) ∗ sin(π ∗ 2 + 0) = 0V
uS = u
Die Storspannungsdampfung :
uS
s = −20log( ) = −20log(0) = ∞
u
cS
3
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
3 Praktische Aufgaben
4 Praktische Aufgaben
4.1 Aliasing
Die Effekte von Aliasing bei der digitalisierung eines rechteckigen Signales mit einem Grund-
frequenz von 10 kHz, bei verschiedenen Abtastfrequenzen ist in Abb 1 zu sehen.
4
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
Aliasing
Abtastrate = 4000 Hz Abtastrate = 10000 Hz
Spannung [V]
Spannung [V]
0.5 0.5
0.0 0.0
0 250 500 750 1000 1250 1500 1750 2000 0 1000 2000 3000 4000 5000
Frequenz [Hz] Frequenz [Hz]
Abtastrate = 12500 Hz Abtastrate = 15000 Hz
Spannung [V]
Spannung [V]
0.5 0.5
0.0 0.0
0 1000 2000 3000 4000 5000 6000 0 1000 2000 3000 4000 5000 6000 7000
Frequenz [Hz] Frequenz [Hz]
Abtastrate = 17500 Hz Abtastrate = 20000 Hz
1.0
Spannung [V]
Spannung [V]
0.5 0.5
0.0 0.0
0 2000 4000 6000 8000 0 2000 4000 6000 8000 10000
Frequenz [Hz] Frequenz [Hz]
Abtastrate = 25000 Hz Abtastrate = 30000 Hz
Spannung [V]
Spannung [V]
0.5 0.5
0.0 0.0
0 2000 4000 6000 8000 10000 12000 0 2000 4000 6000 8000 10000 12000 14000
Frequenz [Hz] Frequenz [Hz]
Abtastrate = 35000 Hz Abtastrate = 40000 Hz
Spannung [V]
Spannung [V]
1.0
0.5
0.5
0.0 0.0
0 2500 5000 7500 10000 12500 15000 17500 0 2500 5000 7500 10000 12500 15000 17500 20000
Frequenz [Hz] Frequenz [Hz]
Wie man in Abb. 1 sehen kann, kommt den korrekten Spektrum erst bei einer Abtastfrequenz
von 20kHz vor, was dem Abtasttheorem entspricht. Bei kleinere Abtastfrequenzen kommen
andere Werte als die zu erwartende Grundfrequenz von 20kHz vor.
Die Aliasing Effekt wäre relativ groß, wegen der Einflüsse des Abtaste theorems. Wenn bei
der Digitalisierung eines auf fmax bandbegrenztes Signals, die Abtastrate kleiner als 2fmax
ist, geschieht eine Verletzung des Nyquist-Shannon-Abtasttheorems. Die Konsequenz dazu
ist Aliasing. Im Frequenzspektrum, die Abtastung eines Signales entspricht eine Periodische
Fortsetzung des originalen Signales im Frequenzbereich, wenn die Abtastrate zu klein ist,
überschneiden sich die einzelne Periode miteinander, und daraus folgt dass das Signal im
Zeitbereich Verzehrt wird.
Die negativen Effekte von Aliasing können mithilfe von einem Low Pass Filter vermieden wer-
den, um den Frequenzspektrum zu reduzieren, und ihn auf die Abtastefrequenz anzupassen.
4.2 Aliasingfilter
Folgend wurden die Effekte von Aliasingfilter betrachtet, bei Nichtsinusförmige Signale. Das
ist nötig weil, bei z.B. rechteckförmige Signalen kommen Oberschwingungen vor die den
Abtasttheorem verletzen können, und als störendes Rauschen in Erscheinung treten. Dafür
wurde ein Rechtecksignal mit einer Grundfrequenz on 1, 4kHz erzeugt, und jeweils mit den
Frequenzen 44kHz und 10kHz abgetastet. Dannach wurde das Prozess wiederholt, aber mit
einer Aliasingfilter, um die Effekte zu vergleichen. Wie man in Abb. 2 sehen kann, helfen die
Aliasingsfilter die ungewünschte Frequenzen zu reduzieren. In den Grafiken ohne Aliasfilter,
kann mann die wiederholende Oberschwingungen sehen, insbesondere bei fs = 10kHz, wo
diese Werte zunehmen. Bei den Fällen wo den Aliasfilter benutzt wurde wird das Signal
schwer gedämpft, und bei einem Fall ist die Grundfrequenz nicht mehr zu erkennen, man
kann aber schon merken dass es weniger Oberschwingungen gibt als am Anfang.
6
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
Aliasing
Spannung [V]
0.8
0.006
0.6
0.004
0.4
0.2 0.002
0.0 0.000
0 5000 10000 15000 20000 0 5000 10000 15000 20000
Frequenz [Hz] Frequenz [Hz]
1.0
Spannung [V]
0.008
0.8 0.006
0.6
0.004
0.4
0.2 0.002
0.0 0.000
0 1000 2000 3000 4000 5000 0 1000 2000 3000 4000 5000
Frequenz [Hz] Frequenz [Hz]
Abbildung 2: Vergleich vom Spektrum der Signalen mit und ohne Antialiasingfilter
4.3 ADU-Histogramm-Test
7
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
ADU HIstogramm
4000
3500
3000
Absolutehaeufigkeit
2500
2000
1500
1000
500
0
0 20 40 60 80 100 120
Code
8
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
250
Absolutehaeufigkeit
200
150
100
50
0
0 20 40 60 80 100 120
Code
Abbildung 4: Bar Histogramm ohne Randwerte. Die gleich Verteilung ist besser hier
erkennbar.
In Abb 5 befindet sich die als Histogramm dargestellte Differentielle Nichtlinearität für jede
Häufigkeit
Stufe des Codes. Sie wurde mit folgender Formel berechnet DN L = Sollhäufigkeit wobei die
Sollhäufigkeit die Häufigkeit bei einer perfekt gleichverteilung der quiantisierten Werten wäre.
Wie man sehen kann, die Form bleibt genau wie bei Abb. 4 erhalten, der Faktor ist aber
anders. Von der Abb. 5 kann man einen Mittelwert schätzen, der gegen 0.8 liegt.
9
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
Differentielle Nichtlinearitäten
0.8
Differentielle Nichtliniearität
0.6
0.4
0.2
0.0
0 20 40 60 80 100 120
Code
Abbildung 5: Bar Histogramm ohne Randwerte. Die gleich Verteilung ist besser hier
erkennbar.
4.4 Störspannungsunterdrückung
In Abb. 6 und Abb. 6. Kann man das Ergebnis der Störspannungsdämpfung eines Störsignals,
die mithilfe von dem Funktionsgenerator und das Programm LabVIEW generiert wurde. In
Abb. 8 ist den Maximalen Fehler zu sehen.
10
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
Stoerspannungsdampfung
50
40
Stoerungsdampfung [dB]
30
20
10
0
101 102
Frequenz [Hz]
11
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
normierte Stoerspannungsdampfung
50
40
Stoerungsdampfung [dB]
30
20
10
0
0.1 1.0 10.0
normierte Frequenz
12
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
1.0
0.5
Maximale Fehler [%/100]
0.0
0.5
1.0
0 2 4 6 8 10 12
Normierte Frequenz in fs* Ti
5 Zusammenfassung
Weitere Elemente der Digitalen Messkete, wie Antialiasingsfilter wurden untersucht, sowie
die Einflüsse und Rückwirkungen die bei der Nutzung von ADU’s auftretten können.
Literatur
http://www.vias.org/mikroelektronik/adcd ualslope.html
13
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
6 Verwendeter Code
4 import numpy as np
5 import matplotlib . pyplot as plt
6 import mdt
7 import os
8
9 freq = {}
10 file_names = []
11 for filen in os . listdir ( " . " ) :
12 if filen . endswith ( " . npy " ) :
13 file_names . append ( filen )
14 def sort_name ( elem ) :
15 return int ( elem . split ( ’. ’) [0])
16
17 file_names . sort ( key = sort_name )
18
19 for filen in file_names :
20 freq [ filen . split ( ’. ’) [0]] = np . load ( filen )
21
22 # fig , axes = plt . subplots (3 ,4 , sharex = True )
23 fig = plt . figure ( figsize =(8 ,10) )
24 fig . suptitle ( ’ Aliasing ’)
25 subplts = {}
26 counter = 1
27 for key , val in freq . items () :
28 spec = mdt . spectrum ( val [0] , int ( key ) )
29 subplts [ key ] = fig . add_subplot (5 ,2 , counter )
30 subplts [ key ]. set_title ( ’ Abtastrate = {} Hz ’. format ( key ) )
31 subplts [ key ]. plot ( spec [0] , spec [1])
32 subplts [ key ]. grid ()
33 subplts [ key ]. set_xlabel ( ’ Frequenz [ Hz ] ’)
34 subplts [ key ]. set_ylabel ( ’ Spannung [ V ] ’)
35 counter += 1;
36
37 # f = freq [0]. items ()
38 # spec = mdt . spectrum ( f [0] , f [1])
39 # ax = fig . add_subplot (3 ,4 ,1)
40 # ax . plot ( spec [0] , spec [1])
41 plt . subplots_adjust ( hspace =0.73)
42 plt . show ()
14
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
4 import numpy as np
5 import matplotlib . pyplot as plt
6 import mdt
7 import os
8
9 freq = {}
10 file_names = []
11 for filen in os . listdir ( " . " ) :
12 if filen . endswith ( " . npy " ) :
13 file_names . append ( filen )
14 def sort_name ( elem ) :
15 return int ( elem . split ( ’. ’) [0])
16
17 # file_names . sort ( key = sort_name )
18
19 for filen in file_names :
20 freq [ filen . split ( ’. ’) [0]] = np . load ( filen )
21
22 # fig , axes = plt . subplots (3 ,4 , sharex = True )
23 fig = plt . figure ()
24 fig . suptitle ( ’ Aliasing ’)
25 subplts = {}
26 counter = 1
27 for key , val in freq . items () :
28 s_rate = int ( key . split ( ’2 ’) [1][:5])
29 mit = key . split ( ’2 ’) [1][5:]
30 spec = mdt . spectrum ( val [0] , int ( key . split ( ’2 ’) [1][:5]) )
31 subplts [ key ] = fig . add_subplot (2 ,2 , counter )
32 subplts [ key ]. set_title ( ’ fs = {} Hz {}
aliasing ’. format ( s_rate , mit ) )
33 subplts [ key ]. plot ( spec [0] , spec [1])
34 subplts [ key ]. grid ()
35 subplts [ key ]. set_xlabel ( ’ Frequenz [ Hz ] ’)
36 subplts [ key ]. set_ylabel ( ’ Spannung [ V ] ’)
37 counter += 1;
38
39 # f = freq [0]. items ()
40 # spec = mdt . spectrum ( f [0] , f [1])
41 # ax = fig . add_subplot (3 ,4 ,1)
15
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
4 # -* - coding : utf -8 -* -
5 """
6 Spyder Editor
7
8 This is a temporary script file .
9 """
10
11 import mdt
12 import numpy as np
13 import matplotlib . pyplot as plt
14 # %%
15 # aduhist = mdt . dataRead ( amplitude =2 , samplingRate =40000 , duration
= 10 , channels =[3] , resolution = 7 , outType = ’ volt ’)
16 aduhist = np . loadtxt ( ’ V8_Aufgabe4 . csv ’ , delimiter = ’ , ’)
17
18 adu_crop = [ x for x in aduhist if x > 0]
19 adu_crop = [ x for x in adu_crop if x < 126]
20
21 ran = np . arange (0 ,128 ,1)
22
23 anzahl , bins , tmp = plt . hist ( aduhist , ran , edgecolor = ’ black ’ ,
linewidth =0.5)
24 plt . title ( ’ ADU HIstogramm ’)
25 plt . xlabel ( ’ Code ’)
26 plt . ylabel ( ’ A b so l u te h a eu f i gk e i t ’)
27 plt . savefig ( ’ auf3 . pdf ’)
28
29 plt . clf ()
30 plt . title ( ’ Bar Diagramm von ADU Histogramm ’)
31 plt . xlabel ( ’ Code ’)
32 plt . ylabel ( ’ A b so l u te h a eu f i gk e i t ’)
33 plt . bar ( ran [1: -2] , anzahl [1: -1])
34 plt . savefig ( ’ auf3_bar . pdf ’)
35
36
37 soll = np . sum ( anzahl ) / len ( anzahl )
38 plt . clf ()
16
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
39 plt . clf ()
40 plt . title ( ’ Differentielle Nichtlinearit ä ten ’)
41 plt . xlabel ( ’ Code ’)
42 plt . ylabel ( ’ Differentielle Nichtliniearit ä t ’)
43 plt . bar ( ran [1: -2] , anzahl [1: -1] / soll )
44 plt . savefig ( ’ auf3_dnl . pdf ’)
45
46
47 # anzahl , bins , tmp = plt . hist ( aduhist [0] ,127)
48 # %%
4 # -* - coding : utf -8 -* -
5 """
6 Spyder Editor
7
8 This is a temporary script file .
9 """
10
11 import mdt
12 import numpy as np
13 import matplotlib . pyplot as plt
14 # %%
15 # aduhist = mdt . dataRead ( amplitude =2 , samplingRate =40000 , duration
= 10 , channels =[3] , resolution = 7 , outType = ’ volt ’)
16 aduhist = np . loadtxt ( ’ V8_Aufgabe4 . csv ’ , delimiter = ’ , ’)
17
18 adu_crop = [ x for x in aduhist if x > 0]
19 adu_crop = [ x for x in adu_crop if x < 126]
20
21 ran = np . arange (0 ,128 ,1)
22
23 anzahl , bins , tmp = plt . hist ( aduhist , ran , edgecolor = ’ black ’ ,
linewidth =0.5)
24 plt . title ( ’ ADU HIstogramm ’)
25 plt . xlabel ( ’ Code ’)
26 plt . ylabel ( ’ A b so l u te h a eu f i gk e i t ’)
27 plt . savefig ( ’ auf3 . pdf ’)
28
29 plt . clf ()
30 plt . title ( ’ Bar Diagramm von ADU Histogramm ’)
31 plt . xlabel ( ’ Code ’)
17
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
32 plt . ylabel ( ’ A b so l u te h a eu f i gk e i t ’)
33 plt . bar ( ran [1: -2] , anzahl [1: -1])
34 plt . savefig ( ’ auf3_bar . pdf ’)
35
36
37 soll = np . sum ( anzahl ) / len ( anzahl )
38 plt . clf ()
39 plt . clf ()
40 plt . title ( ’ Differentielle Nichtlinearit ä ten ’)
41 plt . xlabel ( ’ Code ’)
42 plt . ylabel ( ’ Differentielle Nichtliniearit ä t ’)
43 plt . bar ( ran [1: -2] , anzahl [1: -1] / soll )
44 plt . savefig ( ’ auf3_dnl . pdf ’)
45
46
47 # anzahl , bins , tmp = plt . hist ( aduhist [0] ,127)
48 # %%
4 import numpy as np
5 import matplotlib . pyplot as plt
6 from matplotlib . ticker import ScalarFormatter
7
8 data = np . loadtxt ( ’ auf4 . txt ’ , delimiter = None )
9 xdata = np . array ([ x [0] for x in data ])
10 ydata = [ x [1] for x in data ]
11
12 plt . semilogx ( xdata , ydata )
13 plt . grid ( which = ’ both ’)
14 plt . title ( ’ S t o e r s p a n n u n g s d a m p f u n g ’)
15 plt . xlabel ( ’ Frequenz [ Hz ] ’)
16 plt . ylabel ( ’ S toerun gsdamp fung [ dB ] ’)
17 plt . savefig ( ’ auf4 . pdf ’)
18
19 plt . clf ()
20 plt . title ( ’ normierte S t o e r s p a n n u n g s d a m p f u n g ’)
21 plt . xlabel ( ’ normierte Frequenz ’)
22 plt . ylabel ( ’ S toerun gsdamp fung [ dB ] ’)
23 plt . semilogx ( xdata /50 , ydata )
24
25 formatter = ScalarFormatter ()
26 formatter . set_scientific ( False )
18
Alfredo Chavez ,Hedii Jalloulli , Meriem Jabri Versuchsprotokoll Versuch 8
19