Aus Raspberry Pi Geek 08/2022

Datenverkehr mit dem Speicheroszilloskop analysieren (Seite 2)

Die Umrechungsparameter liest das Programm aus dem Header und rechnet damit die x- und y-Werte um. Dabei gleicht es mehrere Fehler der DSO112A-Firmware-Version 113-11201-211 aus. So wird bei manchen Einstellungen ein falscher Umrechnungsfaktor für die Spannung übermittelt. Deshalb verwendet das Programm nicht den Wert aus # e3, sondern wählt ihn über # e5 aus einer Liste aus. Der Null-Volt-Bezugspunkt kann negative Werte annehmen, wird aber als vorzeichenlose Zahl ausgegeben. Die Umwandlung in das Zweierkomplement übernimmt das Programm in den Zeilen 64 bis 67.

Die Ein- und Ausgaberoutinen aus Listing 2 und Listing 4 lassen sich kombinieren, indem Sie plotdso.py als Bibliothek in readdso.py einbinden und dort die Ausgaberoutine über plotdso.plotdata(filename, title) aufrufen.

Listing 4

plotdso.py

§§donumber0
#!/usr/bin/env python3
'''
usage: ./plotdso.py filename.csv [title]
out: pdso-datafile.png (overwrites file) + plot
'''
# e2: 4th line, 4th field: sample rate. 1250 samples/sec -> 1/1250 sec/sample
# e3: 9th line, 1st field: resolution in uvolt. 200 uvolt/sample -> 200/1000 mv/sample
# e4: 11th line, 1st field: 0 - reference (nullref)
# e5: 10th line, 1st field: unit selector, see yunitc
import matplotlib.pyplot as plt
import numpy as np
import sys
headersize = 16
yunitc = (
(0,0,0,0),
(1,0,0,0),
(2,0,0,0),
(3,800,1000,'Volt'),
(4,400,1000,'Volt'),
(5,200,1000,'Volt'),
(6,80,1000,'Volt'),
(7,40,1000,'Volt'),
(8,20,1000,'Volt'),
(9,8,1000,'Volt'),
(10,4,1,'mV'),
(11,2,1,'mV'),
(12,0.8,1,'mV'),
(13,0.4,1,'mV'),
(14,0.2,1,'mV'),
(15,0.08,1,'mV')
)
def plotdata(fn, tit):
  with open(fn, 'r') as fp:
    data = fp.readlines()
  header = data[:headersize]
  data = data[headersize:]
  if 'DSO112A' not in header[0]:
    print('No DSO112A datafile')
    sys.exit('')
  datapoints = int(header[3].split(',')[1])
  xsamp = float(header[3].split(',')[3])
  cprange = datapoints/xsamp
  if cprange < 1e-3:
    xisample = xsamp*1e-6
    unit = 'us'
  elif cprange < 1:
    xisample = xsamp*1e-3
    unit = 'ms'
  else:
    xisample = xsamp
    unit = 'sec'
  ysel = int(header[9])
  nullref = int(header[10])
  if nullref > 32767:
    nullref = nullref - 65535
    print("nullref negative: ", nullref)
  ysample = yunitc[ysel][1]/yunitc[ysel][2]
  unity = yunitc[ysel][3]
  y = (np.array(data).astype(np.float)-nullref)*ysample
  x = np.arange(0,len(y))/xisample
  unit = 'Time/'+unit
  unity = 'Voltage/'+unity
  plt.title(tit)
  plt.xlabel(unit)
  plt.ylabel(unity)
  fo=fn.split('.')[0]+'.png'
  plt.plot(x,y,'-b', lw=1)
  plt.savefig(fo, bbox_inches='tight')
  plt.show()
if name == '__main__':
  if len(sys.argv) == 1 or sys.argv[1] == '-h':
    print(__doc__)
    sys.exit('')
  fn = sys.argv[1]
  if len(sys.argv) > 2:
      tit = sys.argv[2]
  else:
      tit = ''
  plotdata(fn, tit)

Ströme

Der Sensor 49E ist ein kleiner Messverstärker, der über den sogenannten Hall-Effekt starke Magnetfelder registriert (Abbildung 1). Das Modul links im Bild erweitert ihn um Anschlusskontakte. Das rechte Modul trägt zusätzlich einen Komparator, dessen Digitalausgang wir für die Messungen aber nicht benötigen. Die Sensoren messen Magnetfelder entlang der Sensor- beziehungsweise Modulfläche, senkrecht zu den Anschlüssen.

Abbildung 1: Der linear arbeitende Hall-Sensor&nbsp;49E.

Abbildung 1: Der linear arbeitende Hall-Sensor 49E.

Das Beispiel in Abbildung 2 zeigt den Verlauf des Anlaufstroms eines Staubsaugers. Zur Messung wurde der Sensor so auf dem Netzkabel fixiert, dass er möglichst flach auflag und die Anschlüsse in Richtung des Kabels verliefen.

Abbildung 2: Messung des Magnetfelds eines Netzkabels.

Abbildung 2: Messung des Magnetfelds eines Netzkabels.

Die Empfindlichkeit des Sensors 49E liegt bei 20 mV/mT. Die Abschätzung (siehe Kasten “Magnetfeld eines stromdurchflossenen Leiters”), lässt eine Spannung in der Größenordnung von 5 mV vermuten. Berücksichtigt man den großen Fehler beim Schätzen der Entfernung zum Kupferleiter, stimmen die Werte aus Abbildung 2 recht gut überein.

Magnetfeld eines stromdurchflossenen Leiters

Das Magnetfeld eines elektrischen Leiters ist proportional zum elektrischen Strom I und umgekehrt proportional zum Abstand r zum Leiter: B = µ0*I/(2*pi*r). Dabei steht µ0 für die magnetische Feldkonstante (1,26*10-6 N/A2) und pi für die Kreiszahl (3,141592). Nimmt man an, dass der Sensor 2 Millimeter vom Kupferleiter entfernt ist, beträgt dort das Magnetfeld 0,3 mT, wenn das Kabel bei einer Leistungsaufnahme von 700 Watt von 3 Ampere Strom durchflossen wird. Zum Vergleich: Das Erdmagnetfeld liegt bei 0,04 mT.

Das Abstandsproblem entfällt, wenn man Leiter und Hall-Sonde fest integriert. Der Stromsensor INA219 ist ein Beispiel für diesen Aufbau (Abbildung 3). Über die oberen beiden Kontakte Vin- und Vin+ wird der Strom eingespeist und unterhalb des Hall-Sensors R100 entlanggeführt. Das Oszillogramm aus Abbildung 4 gleicht der Messung aus Abbildung 2. Statt mit einem Hall-Sensor wurde hier der Strom über eine Spule detektiert.

Abbildung 3: Das Stromsensormodul INA219.

Abbildung 3: Das Stromsensormodul INA219.

Abbildung 4: Resultat der Messung mit einer Stromspule.

Abbildung 4: Resultat der Messung mit einer Stromspule.

Nach diesem Prinzip misst auch ein Zangenamperemeter (Abbildung 5) Wechselströme. Der Abstand spielt hier keine große Rolle, da die induzierte Spannung vom Spulendurchmesser abhängt. Wie man in der Abbildung erkennt, lässt sich nur ein einzelnes Kabel ausmessen. Anderenfalls würden sich die Magnetfelder aus Hin- und Rückstrom zu null überlagern.

Abbildung 5: Stromspule mit Messkabel.

Abbildung 5: Stromspule mit Messkabel.

Die Zusatzisolierung der Einzeladern wurde in Abbildung 5 nur fortgelassen, um die Funktion der Kabel zu verdeutlichen. Ohne eine sichere Isolierung besteht Lebensgefahr, wenn man mit Netzspannung arbeitet.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben