Olle_Filzlaus
14.05.2006, 12:16
Hallo,
ich habe google und das forum schon durchsucht, aber nirgends eine antwort auf mein problem erhalten.
ich habe ein kty10 Temperatursensor an meinen ADC gehangen.
aufbau: 5V -> R -> ADC -> Kty10 ->GND
Habe das mal schnell mit nem 2200ohm vorwiderstand ausgerechnet und da müssten am adc ca 2,62V ankommen. das passt auch.
in meinem zimmer sind 21° (Kty = 2003ohm), zeigt der adc ca 896 an. wenn ich den sensor in der hand halte, steigt er auf 901. das sind 5 schritte, bei 0,0048V auf lösung sind das aber nicht viel, oder???? das wären ja pro schritt 3°, ne ziehmlich bescheidene auflösung.
wie kann ich das verbessern????
Ach ja Aref liegt bei 5V. (bit wandler also max 1023.
hier mal mein testprogramm (ist noch nicht speziell für temperatur sondern zeigt erstmal nur die spannung an). ausserdem hat es noch ne leuchtbalkenanzeige. so mal als test.
$regfile = "m16def.dat"
$crystal = 8000000
'******************* AD-Wandler ***********************
Config Adc = Single , Prescaler = Auto , Reference = Internal
'******************* LCD Display **********************
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0
Config Lcdbus = 4
Config Lcd = 16 * 2
Config Portc = Output
Portc = &B11100111
Start Adc
Dim Wert As Word , Channel As Byte , Spannung As Single
Channel = 0
Do
Wert = Getadc(channel)
Spannung = Wert * 0.0048875855
Cls
Locate 1 , 1
Lcd "Volt: " ; Spannung ; " V";
Locate 2 , 1
Lcd "ADC: " ; Wert ;
If Spannung => 0.625 Then
Portc.0 = 0
Else
Portc.0 = 1
End If
If Spannung => 1.25 Then
Portc.1 = 0
Else
Portc.1 = 1
End If
If Spannung => 1.875 Then
Portc.2 = 0
Else
Portc.2 = 1
End If
If Spannung => 2.5 Then
Portc.3 = 0
Else
Portc.3 = 1
End If
If Spannung => 3.125 Then
Portc.4 = 0
Else
Portc.4 = 1
End If
If Spannung => 3.75 Then
Portc.5 = 0
Else
Portc.5 = 1
End If
If Spannung => 4.375 Then
Portc.6 = 0
Else
Portc.6 = 1
End If
If Spannung => 4.95 Then
Portc.7 = 0
Else
Portc.7 = 1
End If
Waitms 500
Loop
End
thx for help
ich habe google und das forum schon durchsucht, aber nirgends eine antwort auf mein problem erhalten.
ich habe ein kty10 Temperatursensor an meinen ADC gehangen.
aufbau: 5V -> R -> ADC -> Kty10 ->GND
Habe das mal schnell mit nem 2200ohm vorwiderstand ausgerechnet und da müssten am adc ca 2,62V ankommen. das passt auch.
in meinem zimmer sind 21° (Kty = 2003ohm), zeigt der adc ca 896 an. wenn ich den sensor in der hand halte, steigt er auf 901. das sind 5 schritte, bei 0,0048V auf lösung sind das aber nicht viel, oder???? das wären ja pro schritt 3°, ne ziehmlich bescheidene auflösung.
wie kann ich das verbessern????
Ach ja Aref liegt bei 5V. (bit wandler also max 1023.
hier mal mein testprogramm (ist noch nicht speziell für temperatur sondern zeigt erstmal nur die spannung an). ausserdem hat es noch ne leuchtbalkenanzeige. so mal als test.
$regfile = "m16def.dat"
$crystal = 8000000
'******************* AD-Wandler ***********************
Config Adc = Single , Prescaler = Auto , Reference = Internal
'******************* LCD Display **********************
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0
Config Lcdbus = 4
Config Lcd = 16 * 2
Config Portc = Output
Portc = &B11100111
Start Adc
Dim Wert As Word , Channel As Byte , Spannung As Single
Channel = 0
Do
Wert = Getadc(channel)
Spannung = Wert * 0.0048875855
Cls
Locate 1 , 1
Lcd "Volt: " ; Spannung ; " V";
Locate 2 , 1
Lcd "ADC: " ; Wert ;
If Spannung => 0.625 Then
Portc.0 = 0
Else
Portc.0 = 1
End If
If Spannung => 1.25 Then
Portc.1 = 0
Else
Portc.1 = 1
End If
If Spannung => 1.875 Then
Portc.2 = 0
Else
Portc.2 = 1
End If
If Spannung => 2.5 Then
Portc.3 = 0
Else
Portc.3 = 1
End If
If Spannung => 3.125 Then
Portc.4 = 0
Else
Portc.4 = 1
End If
If Spannung => 3.75 Then
Portc.5 = 0
Else
Portc.5 = 1
End If
If Spannung => 4.375 Then
Portc.6 = 0
Else
Portc.6 = 1
End If
If Spannung => 4.95 Then
Portc.7 = 0
Else
Portc.7 = 1
End If
Waitms 500
Loop
End
thx for help