Messung der Kapazität


Elektronik-Labor  AVR  Projekte   Touch


 
Das Messverfahren für kapazitive Berührungssensoren eignet sich auch zur Messung kleiner Kapazitäten. Der Vergleichskondensator sollte mit 330 nF relativ groß gewählt werden, um eine gute Auflösung zu bekommen. Damit können Kapazitäten von 1 pF bis 1 nF gemessen werden, mit geringerer Auflösung und Genauigkeit auch bis 20 nF. Das Messgerät erreicht zwar nur eine begrenzte Genauigkeit von etwa 10%, ist aber für viele Zwecke ausreichend. So können z.B. unbeschriftete SMD-Kondensatoren eindeutig bestimmt werden.

 

Bei der Messung wird  davon ausgegangen, dass der Zählwert T1 der Sub Touch1 das Verhältnis der beiden Kapazitäten 330 nF / Cx liefert. Das stimmt unter der Voraussetzung, dass der messende Port seine Low/Hig-Schwelle bei 50 % der Betriebsspannung hat.  Die gesuchte Kapazität ist also 330000/T1 pF. Man kann einen manuellen Abgleich durch Ändern der Konstante 330000 vornehmen, der Wert hat sich jedoch bei Vergleichsmessungen als optimal erwiesen.

'ATmega32, Kapazitätsmessgerät

$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 16
$swstack = 32
$framesize = 32
Baud = 9600


Dim D As Integer
Dim T1 As Integer
Dim T2 As Integer
Dim C As Long
Dim Cnull As Word

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2

Initlcd
Cls


Declare Sub Touch1

Ddrc = 255
Portc = 0

Touch1
Locate 1 , 1
Lcd "C = "

C = 330000
C = C / T1
Cnull = C


Do
Touch1
C = 330000
C = C / T1
C = C - Cnull
Locate 1 , 5
If C > 20000 Then
Lcd " xxxx"
Else
Lcd C
Lcd " pF "
End If
Waitms 500
Loop


Sub Touch1
For T1 = 1 To 30000
Ddrc.0 = 0 'C0 hochohmig
Portc.1 = 1 'C1 high
Ddrc.1 = 1 'C1 niederohmig
If Pinc.0 = 0 Then Exit For 'C0 low?
Ddrc.1 = 0 'C1 hochohmig
Portc.1 = 0 'ohne Pullup
Ddrc.0 = 1
Next T1
Portc.0 = 0
Portc.1 = 0
Ddrc.0 = 1
Ddrc.1 = 1
End Sub

End

Download: Quelltext und Hexfile
Siehe auch: Grundlagen des kapazitiven Sensors




Elektronik-Labor  AVR  Projekte   Touch