Elektrofeld-Monitor
von Johannes Schmitz
Überall gibt es elektrische Felder und Ladungen, aber meist merkt man
nichts davon. Außer wenn man einen elektrischen Schlag verspürt. Da ist
es schon besser, wenn man vorher weiß ob und wie jemand geladen ist.
Der Tiny13 zeigt es an. Rot steht für positive Ladungen, grün für
negative Ladungen. Je nach Ladung reagiert der Sparrow schon auf eine
Entfernung bis zu 30 cm, und zwar ganz ohne eine zusätzliche Antenne.
Wenn man die Füße bewegt und seine Hand in die Nähe der Platine hält,
werden Ladungen erkannt. Und wenn man den Sparrow in der Hand hält wird
bei geeigneten Schuhen jeder Schritt deutlich angezeigt.
Der
offene Eingang B4 (=ADC2) ist hier der Messeingang für statische
elektrische Ladungen. Die zugehörigen elektrischen Felder erzeugen
durch Influenz eine Änderung der Spannung am Eingang. Ein offener
Eingang kann aber jede Spannung annehmen. Für einen mittleren Ruhepegel
sorgt die rote LED am Nachbarport, die mit dem Pullup des Ports jeweils
kurz auf ca. 1,5 V gebracht wird. Eine abwechselnde Messung an ADC3 und
ADC2 lädt dann den offenen Anschluss langsam auf etwa 1,5 V auf.
Feldänderungen führen jedoch zu Abweichungen von der mittleren Spannung
und können daher angezeigt werden.
Das Programm mittelt die
Messungen über einen Zeitraum von 60 ms und filtert damit alle
50-Hz-Störsignale heraus. Zusätzlich gibt es eine
Langzeit-Mittelwertbildung. Das aktuelle Signal wird laufend mit diesem
Mittelwert verglichen um Änderungen elektrischer Felder zu erkennen.
Nach dem Start leuchten die LEDs zunächst einige Sekunden lang, bis der
Mittelwert eingeschwungen ist. Dann sieht man nur noch ein sehr
schwaches Leuchten der roten Referenz-LED. Nun ist der Sparrow scharf
für externe Felder.
Download: Sparrow_E_Field.zip
Direkt laden: http://tiny.systems/categorie/cheepit/ElektrofeldMonitor.html
'Sparrow_E_Field.bas
'Static Electric field monitor
'Positiv red, negativ green
$regfile = "attiny13.dat"
$crystal = 1200000
Baud = 9600
$hwstack = 8
$swstack = 4
$framesize = 4
Dim D As Word
Dim Dd As Word
Dim Ddd As Word
Dim Dummy As Word
Dim Mean As Word
Dim N As Byte
Open "comb.1:9600,8,n,1,INVERTED" For Output As #1
Config Adc = Single , Prescaler = Auto
Start Adc
Do
Dd = Ddd / 8
Ddd = Ddd - Dd
D = 0
For N = 1 To 10
Portb.3 = 1
Waitus 6
Dummy =
Getadc(3)
'red LED
D = D + Getadc(2)
Portb.3 = 0
Waitms 6
Next N
D = D /
10
'60 ms
Ddd = Ddd + D
Mean = Ddd /
8
'>1000 ms
'Print #1 , D
'print #1 , Mean
'Print #1 , " "
If D > Mean Then
D = D - Mean
If D > 2 Then
Ddrb.3 = 1
Portb.3 =
1
'red
Waitms 100
Ddrb.3 = 0
Portb.3 = 0
End If
Else
D = Mean - D
If D > 2 Then
Ddrb.1 = 1
Portb.1 =
1
'green
Waitms 100
Portb.1 = 0
End If
End If
Loop
End