
Infrarotdetektor mit Piezo und ATtiny85
Elektronik-Labor Projekte AVR Tiny85
Ein
piezoelektrischer Kristall erzeugt bekanntlich bei jeder
Temperaturänderung eine Spannung. Das gilt für einen ganz normalen
Piezo-Schallwandler genauso wie für den Kristall in einem
Passiv-Infrarotsensor (siehe Labortagebuch: Innenleben
eines Passiv-IR-Sensors).
Ob die Empfindlichkeit wohl für einen brauchbaren Infrarotsensor
reicht? Für einen Test wurde die Piezo-Scheibe mit Plastikumhüllung
(aus dem Conrad-Elektronik-Kalender 2017) mit Bleistift geschwärzt und
an B4=ADC2 eines Tiny85 angeschlossen. Der 10k-Widersatnd dient nur zum
Schutz gegen Überspannung.
'ADC1b.bas ADC3 an B3, Piezo-Infrarot
$regfile = "attiny85.dat"
$crystal = 8000000
$hwstack = 8
$swstack = 4
$framesize = 4
Dim D As Word
Dim N As Word
Open "comb.1:9600,8,n,1" For Output As #1
'Config Adc = Single , Prescaler = Auto
Config Adc = Single , Prescaler = Auto , Reference = Internal_2.56_nocap
'Config Adc = Single , Prescaler = Auto , Reference = Internal_1.1
Do
D = Getadc(2)
Print #1 , D
Waitms 500
For N = 1 To 100 'Entladen auf 1,1 V
D = Getadc(12)
D = Getadc(2)
Next N
Loop
End
Mit
diesem Programm hat es tatsächlich geklappt. Das folgende Diagramm
wurde mit dem Seriellen Plotter aus der Arduino-IDE aufgenommen. Dazu
muss der Reset-Pin des Controllers gegen VCC kurzgeschlossen werden,
damit nicht das DTR-Signal der Arduino-Software einen Reset
auslöst. Das Diagramm zeigt die Spannungsänderung bei mehrmaliger
Annäherung einer Hand bis auf den Abstand 20 cm. Die Wärmestrahlung der
Hand hat also die Piezoscheibe erwärmt und damit eine Spannungsänderung
erzeugt.
Bei
dieser Messung gibt es die Problematik, die Spannung des Sensors
zuverlässig im mittleren Bereich zu halten. Dafür sorgt das Programm,
indem es immer wieder abwechselnd Dummy-Messungen der internen Referenz
von 1,1 V und am Messeingang ausführt. Tatsächlich bildeten die
geschalteten Kondensatoren des AD-Wandlers auf diese Weise einen
hochohmigen Widerstand von 500 MOhm. Insgesamt 200 Umladevorgänge
pro Sekunde zwischen der internen Referenz und dem AD-Eingang erzeugen
also einen Widerstand von 500 MOhm. So einen Widerstand kann man nicht
kaufen, den muss man sich programmieren. Wenn mal 5 GOhm gebraucht
werden, kein Problem, dann verringert man die Messrate auf 20 Messungen
pro Sekunde.
For N = 1 To 100 'Entladen auf 1,1 V
D = Getadc(12)
D = Getadc(2)
Next N
Um
den programmierten Widerstand zu messen, habe ich statt des Sensors
einen Kondensator mit 100 nF eingebaut. Er wurde dann entladen und
danach die Spannung gemessen. Es zeigte sich eine typische RC-Ladekurve
mit einer Zeitkonstanten von 50 s. Daraus konnte der Ladewiderstand von
500 MOhm berechnet werden (siehe www.elektronik-labor.de/OnlineRechner/Zeitkonstante.html).
Elektronik-Labor Projekte AVR Tiny85