Infrarotdetektor mit Piezo und ATtiny85    


Elektronik-Labor   Projekte   AVR  Tiny85




Lernpaket Mikrocontroller

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