Atmega nie liczy logarytmu

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Zbyszek
Posty: 71
Rejestracja: 30 lis 2017, 17:12

Atmega nie liczy logarytmu

Post autor: Zbyszek » 03 maja 2021, 14:39

Witam,
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.
  1. $sim
  2.  
  3. $regfile = "m8def.dat"
  4.  
  5. $crystal = 16000000
  6.  
  7. Cls
  8.  
  9. Config Lcd = 16 * 2
  10. Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5
  11.  
  12. Cursor Off
  13.  
  14. Start Adc
  15.  
  16. Const R1 = 7500
  17. Const R2 = 9480
  18. Const B = 3882.56
  19. Const T1 = 298.15
  20. Const Ln1 = Log(r1 / R2)
  21. Const Ln3 = B / T1
  22.  
  23.  
  24.  
  25. Dim Tb As Word
  26. Dim Ln2a As Single
  27. Dim Ln2b As Single
  28. Dim Ln2 As Single
  29. Dim Ln4 As Double
  30. Dim Ln5 As Double
  31. Dim Ln6 As Double
  32. Dim Ln7 As Double
  33.  
  34. '*******************************************************************************
  35.  
  36. Do
  37.  
  38. Tb = Getadc(1)
  39. Ln2a = 1024 - Tb
  40. Ln2b = Ln2a / Tb
  41. Ln2 = Log(ln2b)
  42. Ln4 = Ln1 + Ln2
  43. Ln5 = Ln4 + Ln3
  44. Ln6 = B / Ln5
  45. Ln7 = Ln6 - 273.15
  46.  
  47. Locate 1 , 1 : Lcd Ln2
  48.  
  49.  
  50. Loop
  51. End
Jak próbuję wyświetlać poszczególne zmienne na wyświetlaczu to problem pojawia się już przy próbie wyświetlenia zmiennej Ln2b.
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
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1236
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Atmega nie liczy logarytmu

Post autor: niveasoft » 03 maja 2021, 15:54

To musi być stary Bascom skoro nie masz ostrzezeń o tym że nazwy od R0 do R31 są zajęte bo to nazwy rejestrów uC.
Jest też ostrzeżenie o nieprawidłowych typach. Albo wszystko na Double albo na Single albo przed dodawaniem musisz którąś rzutować.
Ogólnie wszystko działa co widać na zrzucie ekranu.
  1. Const R_1 = 7500
  2. Const R_2 = 9480
  3. Const B = 3882.56
  4. Const T1 = 298.15
  5. Const Ln1 = Log(r_1 / R_2)
  6. Const Ln3 = B / T1
  7.  
  8.  
  9.  
  10. Dim Tb As Word
  11. Dim Ln2a As Single
  12. Dim Ln2b As Single
  13. Dim Ln2 As Single
  14. Dim Ln4 As Single                                           'Double
  15. Dim Ln5 As Single                                           'Double
  16. Dim Ln6 As Single                                           'Double
  17. Dim Ln7 As Single                                           'Double
  18.  
  19.     '*******************************************************************************
  20.  
  21. 'Do
  22.  
  23.    Tb = Getadc(1)
  24.    Ln2a = 1024 - Tb
  25.    Ln2b = Ln2a / Tb
  26.    Print Ln2b
  27.    Ln2 = Log(ln2b)
  28.    Print Ln2
  29.    Print Ln3
  30.    Ln4 = Ln1 + Ln2
  31.    Print Ln4
  32.    Ln5 = Ln4 + Ln3
  33.    Print Ln5
  34.    Ln6 = B / Ln5
  35.    Print Ln6
  36.    Ln7 = Ln6 - 273.15
  37.    Print Ln7
  38.    Locate 1 , 1 : Lcd Ln2
  39.  
  40.  
  41. 'Loop
  42. End
Pozdrawiam ;) I proszę, na przyszłość, zapoznaj się z tym -> LINK żebym nie musiał poprawiać ;)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Zbyszek
Posty: 71
Rejestracja: 30 lis 2017, 17:12

Re: Atmega nie liczy logarytmu

Post autor: Zbyszek » 03 maja 2021, 16:10

Bascom 2.0.7.5
teraz kod mi działa
Dziękuję
ODPOWIEDZ