Transformator 600VA. Pomiędzy uzwojenia transformatora jest wsadzony termistor NTC 10k. Chciałem za pomocą Atmegi zmierzyć tą temperaturę, charakterystykę czujnika znam, podstawiłem dane w excelu żeby sprawdzić wzór i wszystko ok, a atmega nie chce tego policzyć. Wzór wygląda tak:
download/file.php?mode=view&id=731&sid= ... e7d41e6251
Wartości R1 , R2 , B , T1 są wartościami stałymi, ale chciałbym mieć możliwość je zmienić ( kalibracja czujnika )
Wzór liczony ręcznie daje prawidłowy wynik czyli jest dobry, natomiast atmega pokazuje głupoty. Poniżej jest krótki kod nad którym się męczę i nie wiem co jest nie tak.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $sim
- $regfile = "m8def.dat"
- $crystal = 16000000
- Cls
- Config Lcd = 16 * 2
- Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5
- Cursor Off
- Start Adc
- Const R1 = 7500
- Const R2 = 9480
- Const B = 3882.56
- Const T1 = 298.15
- Const Ln1 = Log(r1 / R2)
- Const Ln3 = B / T1
- Dim Tb As Word
- Dim Ln2a As Single
- Dim Ln2b As Single
- Dim Ln2 As Single
- Dim Ln4 As Double
- Dim Ln5 As Double
- Dim Ln6 As Double
- Dim Ln7 As Double
- '*******************************************************************************
- Do
- Tb = Getadc(1)
- Ln2a = 1024 - Tb
- Ln2b = Ln2a / Tb
- Ln2 = Log(ln2b)
- Ln4 = Ln1 + Ln2
- Ln5 = Ln4 + Ln3
- Ln6 = B / Ln5
- Ln7 = Ln6 - 273.15
- Locate 1 , 1 : Lcd Ln2
- Loop
- End
Jeżeli wartość ADC jest ustawiona na 291, to zmienne powinny wyglądać tak:
LN1 -0,23428
LN2a 733
LN2b 2,51969
LN2 0,92414
LN3 13,02217
LN4 0,68986
LN5 13,71203
LN6 283,15000
LN7 10,00000