Srccodetst

From MCS Wiki
(Difference between revisions)
Jump to: navigation, search
 
(2 intermediate revisions by one user not shown)
Line 1: Line 1:
 
<source lang="bascomavr">
 
<source lang="bascomavr">
'--------------------------------------------------------------
+
'----------------------------------------------------------------------------
'                   Thomas Jensen | uCtrl.net
+
' 10K NTC-Temperaturmessung          olaf@olaf-hoyer.de      (c)by O.Hoyer
'--------------------------------------------------------------
+
'----------------------------------------------------------------------------
' file: KEYPAD_v.1.0
+
'- einfache Messung der Temperatur mit NTC-Fühlern.
' date: 17/11/2007
+
'- Messbereich -47,0°C bis 146,0°C
'--------------------------------------------------------------
+
'- 2 Draht-Fühlerleitung Kurzschluss fest
$regfile = "attiny2313.dat"
+
'- keine aufwendige, zeitkritsche Berechnung
$crystal = 8000000
+
'- Ausgleich der nichtlinearen Kennlinie in der Tabelle
Config Portd = Input
+
'
Config Portb = Output
+
'- Optional mit digitalen Messwertfilter zur Glättung der Messung
Config Watchdog = 1024
+
'
 +
'
 +
'---------------------------------------------------------------------------
 +
'*** Konstanten *****************
 +
Const Kfi0 = 6                                              'Filterkonstante Temperaturfühler am ADC0
 +
Const Kfi1 = 15                                            'Filterkonstante Temperaturfühler am ADC1
  
Dim Lifesignal As Byte , Number As Byte , Row As Byte , Button As Byte
+
$regfile = "m8def.dat"                                      'Definition-Datei
Dim Code1 As Integer , Code2 As Integer , Code3 As Byte , Code4 As Byte , Nr As Byte
+
$crystal = 8000000                                          'MHz
Dim Redled As Byte , Greenled As Byte , Amberled As Byte , Code As Integer
+
$baud = 38400                                              'Baudrate, seriell, Hardware
Dim Code_p As Integer , Kanal1 As Byte , Kanal2 As Byte , Timeout As Byte , Feil As Integer
+
Baud = 38400
Dim Eeprom As Eram Integer , Program As Byte , Feil_a As Byte
+
  
'Inputs
+
'*** Ports **********************
'PD2 Keypad R1
+
Ddrc = &B00000000 : Portc = &B00000000                      '0=Eing, 1=Ausg. : Pullup / Ausg. setzen
'PD3 Keypad R2
+
Ddrd = &B00000010 : Portd = &B00000000                      '0=Eing, 1=Ausg. : Pullup / Ausg. setzen
'PD4 Keypad R3
+
'PD5 Keypad R4
+
  
'Outputs
+
'*** SRAM Variablen ****
'PB0 Keypad K1
+
Dim T As Sram Integer                                      'temporere Variable
'PB1 Keypad K2
+
Dim W As Sram Integer                                      'temporere Variable
'PB2 Keypad K3
+
Dim N As Sram Byte                                          'temporere Variable
'PB3 Mode 1 signal
+
Dim S As Sram String * 10                                  'ser.Ausgabepuffer
'PB4 Mode 2 signal
+
'PB5 Green LED indicator
+
'PB6 Red LED indicator
+
'PB7 Lifesignal
+
  
Code_p = Eeprom                                            'Get stored code
+
Dim Sek As Sram Byte
If Code_p < 0 Then Code_p = 1234                            'If no code use default
+
Dim Temperatur0 As Sram Integer                            'Temperatur in 1/10tel °C
Number = 255
+
Dim Temperatur1 As Sram Integer                            'Temperatur in 1/10tel °C
  
'Boot
+
Dim Df0 As Sram Integer                                    ' Differenzspeicher für
Portb = 0
+
Dim Df1 As Sram Integer                                    ' digitale Filterberechnung
  
Start Watchdog
+
'*** Reset & Init ***************
 +
Init:
 +
  Config Adc = Single , Prescaler = 8 , Reference = Internal      'z.B. 2,56V
 +
  Start Adc                                                'Power On
  
 +
  Waitms 10
 +
 +
'*** Hauptprogramm **************
 
Main:
 
Main:
'Read keypad
 
If Button = 0 And Feil = 0 And Number = 255 Then
 
  
If Row = 0 Then                                            'Keyboard row 1
+
Messen:
   Portb.0 = 1
+
  T = Getadc(0)                                            'Temperatur0 in 10tel °C
  If Pind.5 = 1 Then Number = 10
+
   Temperatur0 = Lookup(t , Ntcsensor)                      'ohne Digitalfilter
  If Pind.4 = 1 Then Number = 7
+
  If Pind.3 = 1 Then Number = 4
+
  If Pind.2 = 1 Then Number = 1
+
  Portb.0 = 0
+
  End If
+
  
If Row = 1 Then                                            'Keyboard row 2
+
  T = Getadc(1)                                            'Temperatur1 in 10tel °C
   Portb.1 = 1
+
   W = Lookup(t , Ntcsensor)
   If Pind.5 = 1 Then Number = 0
+
   W = W + 0                                               'evtl. Fühlernullpunktkorrektur addieren in 10tel °C
   If Pind.4 = 1 Then Number = 8
+
   T = W - Temperatur1 : Df1 = Df1 + T                      'digitaler Filter
   If Pind.3 = 1 Then Number = 5
+
   T = Df1 / Kfi1 : Temperatur1 = Temperatur1 + T
   If Pind.2 = 1 Then Number = 2
+
   T = T * Kfi1 : Df1 = Df1 - T
  Portb.1 = 0
+
  End If
+
  
If Row = 2 Then                                            'Keyboard row 3
+
Ausgabe:
   Portb.2 = 1
+
   S = Str(temperatur0) : S = Format(s , " 0.0") : Print S ; " , ";
  If Pind.5 = 1 Then Number = 11
+
   S = Str(temperatur1) : S = Format(s , " 0.0") : Print S
  If Pind.4 = 1 Then Number = 9
+
   If Pind.3 = 1 Then Number = 6
+
  If Pind.2 = 1 Then Number = 3
+
  Portb.2 = 0
+
  End If
+
  
Row = Row + 1                                              'Next row
 
If Row > 2 Then Row = 0
 
End If
 
  
'Reset button status
+
  Waitms 300
Portb.0 = 1
+
Portb.1 = 1
+
Portb.2 = 1
+
If Pind.2 = 0 And Pind.3 = 0 And Pind.4 = 0 And Pind.5 = 0 Then Button = 0
+
Portb.0 = 0
+
Portb.1 = 0
+
Portb.2 = 0
+
  
'Get code
+
Goto Main
If Number <> 255 Then
+
Button = 1
+
Select Case Nr
+
  Case 0                                                  'Digit 1
+
  Code1 = Number
+
  Code1 = Code1 * 1000
+
  Code = Code1 + Code
+
  Amberled = 4
+
  Case 1                                                  'Digit 2
+
  Code2 = Number
+
  Code2 = Code2 * 100
+
  Code = Code2 + Code
+
  Amberled = 4
+
  Case 2                                                  'Digit 3
+
  Code3 = Number
+
  Code3 = Code3 * 10
+
  Code = Code3 + Code
+
  Amberled = 4
+
  Case 3                                                  'Digit 4
+
  Code4 = Number
+
  Code = Code4 + Code
+
  Amberled = 4
+
  
  Case 4
+
'*** Unterprogramme *************
  If Program = 1 Then                                      'Program new code
+
      Select Case Number
+
        Case 11                                            'Accept
+
        Code_p = Code
+
        Eeprom = Code_p
+
        Greenled = 60
+
        Case Else                                          'Reject
+
        Redled = 30
+
        End Select
+
      Number = 255
+
      Program = 0
+
      Gosub Reset_code_read
+
      Goto Main
+
      End If
+
  If Code = Code_p Then                                    'Code correct
+
  Feil_a = 0
+
      Select Case Number
+
        Case 0                                            'New code
+
        Program = 1
+
        Amberled = 40
+
        Case 10                                            'Channel 1
+
        Kanal1 = 20
+
        Greenled = 20
+
        Case 11                                            'Channel 2
+
        Kanal2 = 20
+
        Greenled = 40
+
        Case Else                                          'Reject
+
        Redled = 30
+
        End Select
+
  Else                                                    'Code failed
+
      Redled = 30
+
      Feil_a = Feil_a + 1
+
  End If
+
  Timeout = 0
+
  Number = 255
+
  Gosub Reset_code_read
+
  Goto Main
+
End Select
+
Nr = Nr + 1
+
Number = 255
+
End If
+
  
'Timeout when entering code
+
'*** Interruptroutinen **********
If Nr > 0 And Timeout = 0 Then Timeout = 201
+
If Timeout > 0 Then Timeout = Timeout - 1
+
If Timeout = 1 And Nr <> 0 Then
+
  Gosub Reset_code_read
+
  Number = 255
+
  Redled = 30
+
  End If
+
  
'Error handling, 3 wrong codes
+
'*** Ende ***********************
If Feil_a > 3 And Feil = 0 Then
+
End
  Feil = 1200
+
'*** Tabellen in Code-Mem ****************
  Feil_a = 0
+
$data
  End If
+
If Feil > 0 And Redled = 0 Then Redled = 4
+
If Feil > 0 Then Feil = Feil - 1
+
  
'AmberLED
+
'NTC-Temperatursensor Tabelle , 0-1023 = Temperatur in °C/10
If Amberled > 0 Then
+
Ntcsensor:
  Greenled = Amberled
+
Data 1466 % , 1456 % , 1445 % , 1434 % , 1424 % , 1414 % , 1404 % , 1394 % , 1384 % , 1375 %
  Redled = Amberled
+
Data 1365 % , 1356 % , 1347 % , 1338 % , 1329 % , 1320 % , 1311 % , 1303 % , 1294 % , 1286 %
  Amberled = 0
+
Data 1278 % , 1270 % , 1262 % , 1254 % , 1246 % , 1238 % , 1231 % , 1223 % , 1216 % , 1209 %
  End If
+
Data 1202 % , 1195 % , 1188 % , 1181 % , 1174 % , 1167 % , 1160 % , 1154 % , 1147 % , 1141 %
 +
Data 1135 % , 1128 % , 1122 % , 1116 % , 1110 % , 1104 % , 1098 % , 1092 % , 1087 % , 1081 %
 +
Data 1075 % , 1070 % , 1064 % , 1059 % , 1053 % , 1048 % , 1043 % , 1037 % , 1032 % , 1027 %
 +
Data 1022 % , 1017 % , 1012 % , 1007 % , 1002 % , 997 % , 993 % , 988 % , 983 % , 979 %
 +
Data 974 % , 969 % , 965 % , 961 % , 956 % , 952 % , 947 % , 943 % , 939 % , 935 %
 +
Data 931 % , 926 % , 922 % , 918 % , 914 % , 910 % , 906 % , 902 % , 899 % , 895 %
 +
Data 891 % , 887 % , 883 % , 880 % , 876 % , 872 % , 869 % , 865 % , 862 % , 858 %
 +
Data 855 % , 851 % , 848 % , 844 % , 841 % , 838 % , 834 % , 831 % , 828 % , 824 %
 +
Data 821 % , 818 % , 815 % , 812 % , 809 % , 805 % , 802 % , 799 % , 796 % , 793 %
 +
Data 790 % , 787 % , 784 % , 781 % , 779 % , 776 % , 773 % , 770 % , 767 % , 764 %
 +
Data 762 % , 759 % , 756 % , 753 % , 751 % , 748 % , 745 % , 743 % , 740 % , 737 %
 +
Data 735 % , 732 % , 730 % , 727 % , 725 % , 722 % , 720 % , 717 % , 715 % , 712 %
 +
Data 710 % , 707 % , 705 % , 703 % , 700 % , 698 % , 696 % , 693 % , 691 % , 689 %
 +
Data 686 % , 684 % , 682 % , 680 % , 677 % , 675 % , 673 % , 671 % , 669 % , 666 %
 +
Data 664 % , 662 % , 660 % , 658 % , 656 % , 654 % , 652 % , 650 % , 648 % , 646 %
 +
Data 644 % , 642 % , 640 % , 638 % , 636 % , 634 % , 632 % , 630 % , 628 % , 626 %
 +
Data 624 % , 622 % , 620 % , 618 % , 616 % , 614 % , 613 % , 611 % , 609 % , 607 %
 +
Data 605 % , 603 % , 602 % , 600 % , 598 % , 596 % , 594 % , 593 % , 591 % , 589 %
 +
Data 587 % , 586 % , 584 % , 582 % , 581 % , 579 % , 577 % , 575 % , 574 % , 572 %
 +
Data 570 % , 569 % , 567 % , 566 % , 564 % , 562 % , 561 % , 559 % , 557 % , 556 %
 +
Data 554 % , 553 % , 551 % , 550 % , 548 % , 546 % , 545 % , 543 % , 542 % , 540 %
 +
Data 539 % , 537 % , 536 % , 534 % , 533 % , 531 % , 530 % , 528 % , 527 % , 525 %
 +
Data 524 % , 523 % , 521 % , 520 % , 518 % , 517 % , 515 % , 514 % , 513 % , 511 %
 +
Data 510 % , 508 % , 507 % , 506 % , 504 % , 503 % , 501 % , 500 % , 499 % , 497 %
 +
Data 496 % , 495 % , 493 % , 492 % , 491 % , 489 % , 488 % , 487 % , 485 % , 484 %
 +
Data 483 % , 481 % , 480 % , 479 % , 478 % , 476 % , 475 % , 474 % , 473 % , 471 %
 +
Data 470 % , 469 % , 467 % , 466 % , 465 % , 464 % , 463 % , 461 % , 460 % , 459 %
 +
Data 458 % , 456 % , 455 % , 454 % , 453 % , 452 % , 450 % , 449 % , 448 % , 447 %
 +
Data 446 % , 444 % , 443 % , 442 % , 441 % , 440 % , 439 % , 437 % , 436 % , 435 %
 +
Data 434 % , 433 % , 432 % , 431 % , 429 % , 428 % , 427 % , 426 % , 425 % , 424 %
 +
Data 423 % , 422 % , 420 % , 419 % , 418 % , 417 % , 416 % , 415 % , 414 % , 413 %
 +
Data 412 % , 411 % , 410 % , 408 % , 407 % , 406 % , 405 % , 404 % , 403 % , 402 %
 +
Data 401 % , 400 % , 399 % , 398 % , 397 % , 396 % , 395 % , 394 % , 393 % , 391 %
 +
Data 390 % , 389 % , 388 % , 387 % , 386 % , 385 % , 384 % , 383 % , 382 % , 381 %
 +
Data 380 % , 379 % , 378 % , 377 % , 376 % , 375 % , 374 % , 373 % , 372 % , 371 %
 +
Data 370 % , 369 % , 368 % , 367 % , 366 % , 365 % , 364 % , 363 % , 362 % , 361 %
 +
Data 360 % , 359 % , 358 % , 357 % , 356 % , 355 % , 355 % , 354 % , 353 % , 352 %
 +
Data 351 % , 350 % , 349 % , 348 % , 347 % , 346 % , 345 % , 344 % , 343 % , 342 %
 +
Data 341 % , 340 % , 339 % , 338 % , 337 % , 337 % , 336 % , 335 % , 334 % , 333 %
 +
Data 332 % , 331 % , 330 % , 329 % , 328 % , 327 % , 326 % , 325 % , 325 % , 324 %
 +
Data 323 % , 322 % , 321 % , 320 % , 319 % , 318 % , 317 % , 316 % , 315 % , 315 %
 +
Data 314 % , 313 % , 312 % , 311 % , 310 % , 309 % , 308 % , 307 % , 306 % , 306 %
 +
Data 305 % , 304 % , 303 % , 302 % , 301 % , 300 % , 299 % , 298 % , 298 % , 297 %
 +
Data 296 % , 295 % , 294 % , 293 % , 292 % , 291 % , 291 % , 290 % , 289 % , 288 %
 +
Data 287 % , 286 % , 285 % , 284 % , 284 % , 283 % , 282 % , 281 % , 280 % , 279 %
 +
Data 278 % , 278 % , 277 % , 276 % , 275 % , 274 % , 273 % , 272 % , 272 % , 271 %
 +
Data 270 % , 269 % , 268 % , 267 % , 266 % , 266 % , 265 % , 264 % , 263 % , 262 %
 +
Data 261 % , 260 % , 260 % , 259 % , 258 % , 257 % , 256 % , 255 % , 255 % , 254 %
 +
Data 253 % , 252 % , 251 % , 250 % , 249 % , 249 % , 248 % , 247 % , 246 % , 245 %
 +
Data 244 % , 244 % , 243 % , 242 % , 241 % , 240 % , 239 % , 238 % , 238 % , 237 %
 +
Data 236 % , 235 % , 234 % , 233 % , 233 % , 232 % , 231 % , 230 % , 229 % , 228 %
 +
Data 228 % , 227 % , 226 % , 225 % , 224 % , 223 % , 223 % , 222 % , 221 % , 220 %
 +
Data 219 % , 218 % , 218 % , 217 % , 216 % , 215 % , 214 % , 213 % , 212 % , 212 %
 +
Data 211 % , 210 % , 209 % , 208 % , 207 % , 207 % , 206 % , 205 % , 204 % , 203 %
 +
Data 202 % , 202 % , 201 % , 200 % , 199 % , 198 % , 197 % , 197 % , 196 % , 195 %
 +
Data 194 % , 193 % , 192 % , 192 % , 191 % , 190 % , 189 % , 188 % , 187 % , 186 %
 +
Data 186 % , 185 % , 184 % , 183 % , 182 % , 181 % , 181 % , 180 % , 179 % , 178 %
 +
Data 177 % , 176 % , 175 % , 175 % , 174 % , 173 % , 172 % , 171 % , 170 % , 170 %
 +
Data 169 % , 168 % , 167 % , 166 % , 165 % , 164 % , 164 % , 163 % , 162 % , 161 %
 +
Data 160 % , 159 % , 158 % , 158 % , 157 % , 156 % , 155 % , 154 % , 153 % , 152 %
 +
Data 152 % , 151 % , 150 % , 149 % , 148 % , 147 % , 146 % , 146 % , 145 % , 144 %
 +
Data 143 % , 142 % , 141 % , 140 % , 139 % , 139 % , 138 % , 137 % , 136 % , 135 %
 +
Data 134 % , 133 % , 132 % , 132 % , 131 % , 130 % , 129 % , 128 % , 127 % , 126 %
 +
Data 125 % , 124 % , 124 % , 123 % , 122 % , 121 % , 120 % , 119 % , 118 % , 117 %
 +
Data 116 % , 115 % , 115 % , 114 % , 113 % , 112 % , 111 % , 110 % , 109 % , 108 %
 +
Data 107 % , 106 % , 105 % , 105 % , 104 % , 103 % , 102 % , 101 % , 100 % , 99 %
 +
Data 98 % , 97 % , 96 % , 95 % , 94 % , 93 % , 93 % , 92 % , 91 % , 90 %
 +
Data 89 % , 88 % , 87 % , 86 % , 85 % , 84 % , 83 % , 82 % , 81 % , 80 %
 +
Data 79 % , 78 % , 77 % , 76 % , 75 % , 75 % , 74 % , 73 % , 72 % , 71 %
 +
Data 70 % , 69 % , 68 % , 67 % , 66 % , 65 % , 64 % , 63 % , 62 % , 61 %
 +
Data 60 % , 59 % , 58 % , 57 % , 56 % , 55 % , 54 % , 53 % , 52 % , 51 %
 +
Data 50 % , 49 % , 48 % , 47 % , 46 % , 45 % , 44 % , 43 % , 42 % , 41 %
 +
Data 40 % , 39 % , 37 % , 36 % , 35 % , 34 % , 33 % , 32 % , 31 % , 30 %
 +
Data 29 % , 28 % , 27 % , 26 % , 25 % , 24 % , 23 % , 22 % , 20 % , 19 %
 +
Data 18 % , 17 % , 16 % , 15 % , 14 % , 13 % , 12 % , 11 % , 10 % , 8 %
 +
Data 7 % , 6 % , 5 % , 4 % , 3 % , 2 % , 1 % , -1 % , -2 % , -3 %
 +
Data -4 % , -5 % , -6 % , -7 % , -9 % , -10 % , -11 % , -12 % , -13 % , -14 %
 +
Data -16 % , -17 % , -18 % , -19 % , -20 % , -22 % , -23 % , -24 % , -25 % , -26 %
 +
Data -28 % , -29 % , -30 % , -31 % , -33 % , -34 % , -35 % , -36 % , -37 % , -39 %
 +
Data -40 % , -41 % , -43 % , -44 % , -45 % , -46 % , -48 % , -49 % , -50 % , -51 %
 +
Data -53 % , -54 % , -55 % , -57 % , -58 % , -59 % , -61 % , -62 % , -63 % , -65 %
 +
Data -66 % , -67 % , -69 % , -70 % , -71 % , -73 % , -74 % , -76 % , -77 % , -78 %
 +
Data -80 % , -81 % , -83 % , -84 % , -85 % , -87 % , -88 % , -90 % , -91 % , -93 %
 +
Data -94 % , -95 % , -97 % , -98 % , -100 % , -101 % , -103 % , -104 % , -106 % , -107 %
 +
Data -109 % , -110 % , -112 % , -113 % , -115 % , -116 % , -118 % , -120 % , -121 % , -123 %
 +
Data -124 % , -126 % , -127 % , -129 % , -131 % , -132 % , -134 % , -136 % , -137 % , -139 %
 +
Data -140 % , -142 % , -144 % , -145 % , -147 % , -149 % , -151 % , -152 % , -154 % , -156 %
 +
Data -157 % , -159 % , -161 % , -163 % , -164 % , -166 % , -168 % , -170 % , -172 % , -173 %
 +
Data -175 % , -177 % , -179 % , -181 % , -183 % , -184 % , -186 % , -188 % , -190 % , -192 %
 +
Data -194 % , -196 % , -198 % , -200 % , -202 % , -204 % , -206 % , -208 % , -210 % , -212 %
 +
Data -214 % , -216 % , -218 % , -220 % , -222 % , -224 % , -226 % , -228 % , -230 % , -232 %
 +
Data -234 % , -236 % , -239 % , -241 % , -243 % , -245 % , -247 % , -250 % , -252 % , -254 %
 +
Data -256 % , -259 % , -261 % , -263 % , -266 % , -268 % , -270 % , -273 % , -275 % , -277 %
 +
Data -280 % , -282 % , -285 % , -287 % , -290 % , -292 % , -295 % , -297 % , -300 % , -302 %
 +
Data -305 % , -307 % , -310 % , -313 % , -315 % , -318 % , -321 % , -323 % , -326 % , -329 %
 +
Data -332 % , -334 % , -337 % , -340 % , -343 % , -346 % , -349 % , -351 % , -354 % , -357 %
 +
Data -360 % , -363 % , -366 % , -369 % , -372 % , -375 % , -379 % , -382 % , -385 % , -388 %
 +
Data -391 % , -394 % , -398 % , -401 % , -404 % , -408 % , -411 % , -414 % , -418 % , -421 %
 +
Data -425 % , -428 % , -432 % , -435 % , -439 % , -442 % , -446 % , -450 % , -453 % , -457 %
 +
Data -461 % , -465 % , -469 % , -472 %
  
'GreenLED
+
'-------------------------------------------------------------------------------------------
If Greenled > 2 Then Portb.5 = 1
+
If Greenled = 2 Then Portb.5 = 0
+
If Greenled > 0 Then Greenled = Greenled - 1
+
 
+
'RedLED
+
If Redled > 2 Then Portb.6 = 1
+
If Redled = 2 Then Portb.6 = 0
+
If Redled > 0 Then Redled = Redled - 1
+
 
+
'Channel1
+
If Kanal1 = 20 Then Portb.3 = 1
+
If Kanal1 = 1 Then Portb.3 = 0
+
If Kanal1 > 0 Then Kanal1 = Kanal1 - 1
+
 
+
'Channel2
+
If Kanal2 = 20 Then Portb.4 = 1
+
If Kanal2 = 1 Then Portb.4 = 0
+
If Kanal2 > 0 Then Kanal2 = Kanal2 - 1
+
 
+
'Lifesignal
+
If Lifesignal > 0 Then Lifesignal = Lifesignal - 1
+
If Lifesignal = 12 Then Portb.7 = 1
+
If Lifesignal = 1 Then Portb.7 = 0
+
If Lifesignal = 0 Then Lifesignal = 41
+
 
+
Reset Watchdog
+
Waitms 50
+
Goto Main                                                  'Loop cycle
+
End
+
 
+
Reset_code_read:                                            'Reset code param.
+
  Nr = 0
+
  Code = 0
+
  Code1 = 0
+
  Code2 = 0
+
  Code3 = 0
+
  Code4 = 0
+
Return
+
End
+
  
  
 
</source>
 
</source>

Latest revision as of 16:17, 30 July 2019

'----------------------------------------------------------------------------
'  10K NTC-Temperaturmessung           olaf@olaf-hoyer.de      (c)by O.Hoyer
'----------------------------------------------------------------------------
'- einfache Messung der Temperatur mit NTC-Fühlern.
'- Messbereich -47,0°C bis 146,0°C
'- 2 Draht-Fühlerleitung Kurzschluss fest
'- keine aufwendige, zeitkritsche Berechnung
'- Ausgleich der nichtlinearen Kennlinie in der Tabelle
'
'- Optional mit digitalen Messwertfilter zur Glättung der Messung
'
'
'---------------------------------------------------------------------------
'*** Konstanten *****************
Const Kfi0 = 6                                              'Filterkonstante Temperaturfühler am ADC0
Const Kfi1 = 15                                             'Filterkonstante Temperaturfühler am ADC1
 
$regfile = "m8def.dat"                                      'Definition-Datei
$crystal = 8000000                                          'MHz
$baud = 38400                                               'Baudrate, seriell, Hardware
 Baud = 38400
 
'*** Ports **********************
Ddrc = &B00000000 : Portc = &B00000000                      '0=Eing, 1=Ausg. : Pullup / Ausg. setzen
Ddrd = &B00000010 : Portd = &B00000000                      '0=Eing, 1=Ausg. : Pullup / Ausg. setzen
 
'*** SRAM Variablen ****
Dim T As Sram Integer                                       'temporere Variable
Dim W As Sram Integer                                       'temporere Variable
Dim N As Sram Byte                                          'temporere Variable
Dim S As Sram String * 10                                   'ser.Ausgabepuffer
 
Dim Sek As Sram Byte
Dim Temperatur0 As Sram Integer                             'Temperatur in 1/10tel °C
Dim Temperatur1 As Sram Integer                             'Temperatur in 1/10tel °C
 
Dim Df0 As Sram Integer                                     ' Differenzspeicher für
Dim Df1 As Sram Integer                                     ' digitale Filterberechnung
 
'*** Reset & Init ***************
Init:
   Config Adc = Single , Prescaler = 8 , Reference = Internal       'z.B. 2,56V
   Start Adc                                                'Power On
 
   Waitms 10
 
'*** Hauptprogramm **************
Main:
 
Messen:
   T = Getadc(0)                                            'Temperatur0 in 10tel °C
   Temperatur0 = Lookup(t , Ntcsensor)                      'ohne Digitalfilter
 
   T = Getadc(1)                                            'Temperatur1 in 10tel °C
   W = Lookup(t , Ntcsensor)
   W = W + 0                                                'evtl. Fühlernullpunktkorrektur addieren in 10tel °C
   T = W - Temperatur1 : Df1 = Df1 + T                      'digitaler Filter
   T = Df1 / Kfi1 : Temperatur1 = Temperatur1 + T
   T = T * Kfi1 : Df1 = Df1 - T
 
Ausgabe:
   S = Str(temperatur0) : S = Format(s , " 0.0") : Print S ; " , ";
   S = Str(temperatur1) : S = Format(s , " 0.0") : Print S
 
 
   Waitms 300
 
Goto Main
 
'*** Unterprogramme *************
 
'*** Interruptroutinen **********
 
'*** Ende ***********************
End
'*** Tabellen in Code-Mem ****************
$data
 
'NTC-Temperatursensor Tabelle , 0-1023 = Temperatur in °C/10
Ntcsensor:
Data 1466 % , 1456 % , 1445 % , 1434 % , 1424 % , 1414 % , 1404 % , 1394 % , 1384 % , 1375 %
Data 1365 % , 1356 % , 1347 % , 1338 % , 1329 % , 1320 % , 1311 % , 1303 % , 1294 % , 1286 %
Data 1278 % , 1270 % , 1262 % , 1254 % , 1246 % , 1238 % , 1231 % , 1223 % , 1216 % , 1209 %
Data 1202 % , 1195 % , 1188 % , 1181 % , 1174 % , 1167 % , 1160 % , 1154 % , 1147 % , 1141 %
Data 1135 % , 1128 % , 1122 % , 1116 % , 1110 % , 1104 % , 1098 % , 1092 % , 1087 % , 1081 %
Data 1075 % , 1070 % , 1064 % , 1059 % , 1053 % , 1048 % , 1043 % , 1037 % , 1032 % , 1027 %
Data 1022 % , 1017 % , 1012 % , 1007 % , 1002 % , 997 % , 993 % , 988 % , 983 % , 979 %
Data 974 % , 969 % , 965 % , 961 % , 956 % , 952 % , 947 % , 943 % , 939 % , 935 %
Data 931 % , 926 % , 922 % , 918 % , 914 % , 910 % , 906 % , 902 % , 899 % , 895 %
Data 891 % , 887 % , 883 % , 880 % , 876 % , 872 % , 869 % , 865 % , 862 % , 858 %
Data 855 % , 851 % , 848 % , 844 % , 841 % , 838 % , 834 % , 831 % , 828 % , 824 %
Data 821 % , 818 % , 815 % , 812 % , 809 % , 805 % , 802 % , 799 % , 796 % , 793 %
Data 790 % , 787 % , 784 % , 781 % , 779 % , 776 % , 773 % , 770 % , 767 % , 764 %
Data 762 % , 759 % , 756 % , 753 % , 751 % , 748 % , 745 % , 743 % , 740 % , 737 %
Data 735 % , 732 % , 730 % , 727 % , 725 % , 722 % , 720 % , 717 % , 715 % , 712 %
Data 710 % , 707 % , 705 % , 703 % , 700 % , 698 % , 696 % , 693 % , 691 % , 689 %
Data 686 % , 684 % , 682 % , 680 % , 677 % , 675 % , 673 % , 671 % , 669 % , 666 %
Data 664 % , 662 % , 660 % , 658 % , 656 % , 654 % , 652 % , 650 % , 648 % , 646 %
Data 644 % , 642 % , 640 % , 638 % , 636 % , 634 % , 632 % , 630 % , 628 % , 626 %
Data 624 % , 622 % , 620 % , 618 % , 616 % , 614 % , 613 % , 611 % , 609 % , 607 %
Data 605 % , 603 % , 602 % , 600 % , 598 % , 596 % , 594 % , 593 % , 591 % , 589 %
Data 587 % , 586 % , 584 % , 582 % , 581 % , 579 % , 577 % , 575 % , 574 % , 572 %
Data 570 % , 569 % , 567 % , 566 % , 564 % , 562 % , 561 % , 559 % , 557 % , 556 %
Data 554 % , 553 % , 551 % , 550 % , 548 % , 546 % , 545 % , 543 % , 542 % , 540 %
Data 539 % , 537 % , 536 % , 534 % , 533 % , 531 % , 530 % , 528 % , 527 % , 525 %
Data 524 % , 523 % , 521 % , 520 % , 518 % , 517 % , 515 % , 514 % , 513 % , 511 %
Data 510 % , 508 % , 507 % , 506 % , 504 % , 503 % , 501 % , 500 % , 499 % , 497 %
Data 496 % , 495 % , 493 % , 492 % , 491 % , 489 % , 488 % , 487 % , 485 % , 484 %
Data 483 % , 481 % , 480 % , 479 % , 478 % , 476 % , 475 % , 474 % , 473 % , 471 %
Data 470 % , 469 % , 467 % , 466 % , 465 % , 464 % , 463 % , 461 % , 460 % , 459 %
Data 458 % , 456 % , 455 % , 454 % , 453 % , 452 % , 450 % , 449 % , 448 % , 447 %
Data 446 % , 444 % , 443 % , 442 % , 441 % , 440 % , 439 % , 437 % , 436 % , 435 %
Data 434 % , 433 % , 432 % , 431 % , 429 % , 428 % , 427 % , 426 % , 425 % , 424 %
Data 423 % , 422 % , 420 % , 419 % , 418 % , 417 % , 416 % , 415 % , 414 % , 413 %
Data 412 % , 411 % , 410 % , 408 % , 407 % , 406 % , 405 % , 404 % , 403 % , 402 %
Data 401 % , 400 % , 399 % , 398 % , 397 % , 396 % , 395 % , 394 % , 393 % , 391 %
Data 390 % , 389 % , 388 % , 387 % , 386 % , 385 % , 384 % , 383 % , 382 % , 381 %
Data 380 % , 379 % , 378 % , 377 % , 376 % , 375 % , 374 % , 373 % , 372 % , 371 %
Data 370 % , 369 % , 368 % , 367 % , 366 % , 365 % , 364 % , 363 % , 362 % , 361 %
Data 360 % , 359 % , 358 % , 357 % , 356 % , 355 % , 355 % , 354 % , 353 % , 352 %
Data 351 % , 350 % , 349 % , 348 % , 347 % , 346 % , 345 % , 344 % , 343 % , 342 %
Data 341 % , 340 % , 339 % , 338 % , 337 % , 337 % , 336 % , 335 % , 334 % , 333 %
Data 332 % , 331 % , 330 % , 329 % , 328 % , 327 % , 326 % , 325 % , 325 % , 324 %
Data 323 % , 322 % , 321 % , 320 % , 319 % , 318 % , 317 % , 316 % , 315 % , 315 %
Data 314 % , 313 % , 312 % , 311 % , 310 % , 309 % , 308 % , 307 % , 306 % , 306 %
Data 305 % , 304 % , 303 % , 302 % , 301 % , 300 % , 299 % , 298 % , 298 % , 297 %
Data 296 % , 295 % , 294 % , 293 % , 292 % , 291 % , 291 % , 290 % , 289 % , 288 %
Data 287 % , 286 % , 285 % , 284 % , 284 % , 283 % , 282 % , 281 % , 280 % , 279 %
Data 278 % , 278 % , 277 % , 276 % , 275 % , 274 % , 273 % , 272 % , 272 % , 271 %
Data 270 % , 269 % , 268 % , 267 % , 266 % , 266 % , 265 % , 264 % , 263 % , 262 %
Data 261 % , 260 % , 260 % , 259 % , 258 % , 257 % , 256 % , 255 % , 255 % , 254 %
Data 253 % , 252 % , 251 % , 250 % , 249 % , 249 % , 248 % , 247 % , 246 % , 245 %
Data 244 % , 244 % , 243 % , 242 % , 241 % , 240 % , 239 % , 238 % , 238 % , 237 %
Data 236 % , 235 % , 234 % , 233 % , 233 % , 232 % , 231 % , 230 % , 229 % , 228 %
Data 228 % , 227 % , 226 % , 225 % , 224 % , 223 % , 223 % , 222 % , 221 % , 220 %
Data 219 % , 218 % , 218 % , 217 % , 216 % , 215 % , 214 % , 213 % , 212 % , 212 %
Data 211 % , 210 % , 209 % , 208 % , 207 % , 207 % , 206 % , 205 % , 204 % , 203 %
Data 202 % , 202 % , 201 % , 200 % , 199 % , 198 % , 197 % , 197 % , 196 % , 195 %
Data 194 % , 193 % , 192 % , 192 % , 191 % , 190 % , 189 % , 188 % , 187 % , 186 %
Data 186 % , 185 % , 184 % , 183 % , 182 % , 181 % , 181 % , 180 % , 179 % , 178 %
Data 177 % , 176 % , 175 % , 175 % , 174 % , 173 % , 172 % , 171 % , 170 % , 170 %
Data 169 % , 168 % , 167 % , 166 % , 165 % , 164 % , 164 % , 163 % , 162 % , 161 %
Data 160 % , 159 % , 158 % , 158 % , 157 % , 156 % , 155 % , 154 % , 153 % , 152 %
Data 152 % , 151 % , 150 % , 149 % , 148 % , 147 % , 146 % , 146 % , 145 % , 144 %
Data 143 % , 142 % , 141 % , 140 % , 139 % , 139 % , 138 % , 137 % , 136 % , 135 %
Data 134 % , 133 % , 132 % , 132 % , 131 % , 130 % , 129 % , 128 % , 127 % , 126 %
Data 125 % , 124 % , 124 % , 123 % , 122 % , 121 % , 120 % , 119 % , 118 % , 117 %
Data 116 % , 115 % , 115 % , 114 % , 113 % , 112 % , 111 % , 110 % , 109 % , 108 %
Data 107 % , 106 % , 105 % , 105 % , 104 % , 103 % , 102 % , 101 % , 100 % , 99 %
Data 98 % , 97 % , 96 % , 95 % , 94 % , 93 % , 93 % , 92 % , 91 % , 90 %
Data 89 % , 88 % , 87 % , 86 % , 85 % , 84 % , 83 % , 82 % , 81 % , 80 %
Data 79 % , 78 % , 77 % , 76 % , 75 % , 75 % , 74 % , 73 % , 72 % , 71 %
Data 70 % , 69 % , 68 % , 67 % , 66 % , 65 % , 64 % , 63 % , 62 % , 61 %
Data 60 % , 59 % , 58 % , 57 % , 56 % , 55 % , 54 % , 53 % , 52 % , 51 %
Data 50 % , 49 % , 48 % , 47 % , 46 % , 45 % , 44 % , 43 % , 42 % , 41 %
Data 40 % , 39 % , 37 % , 36 % , 35 % , 34 % , 33 % , 32 % , 31 % , 30 %
Data 29 % , 28 % , 27 % , 26 % , 25 % , 24 % , 23 % , 22 % , 20 % , 19 %
Data 18 % , 17 % , 16 % , 15 % , 14 % , 13 % , 12 % , 11 % , 10 % , 8 %
Data 7 % , 6 % , 5 % , 4 % , 3 % , 2 % , 1 % , -1 % , -2 % , -3 %
Data -4 % , -5 % , -6 % , -7 % , -9 % , -10 % , -11 % , -12 % , -13 % , -14 %
Data -16 % , -17 % , -18 % , -19 % , -20 % , -22 % , -23 % , -24 % , -25 % , -26 %
Data -28 % , -29 % , -30 % , -31 % , -33 % , -34 % , -35 % , -36 % , -37 % , -39 %
Data -40 % , -41 % , -43 % , -44 % , -45 % , -46 % , -48 % , -49 % , -50 % , -51 %
Data -53 % , -54 % , -55 % , -57 % , -58 % , -59 % , -61 % , -62 % , -63 % , -65 %
Data -66 % , -67 % , -69 % , -70 % , -71 % , -73 % , -74 % , -76 % , -77 % , -78 %
Data -80 % , -81 % , -83 % , -84 % , -85 % , -87 % , -88 % , -90 % , -91 % , -93 %
Data -94 % , -95 % , -97 % , -98 % , -100 % , -101 % , -103 % , -104 % , -106 % , -107 %
Data -109 % , -110 % , -112 % , -113 % , -115 % , -116 % , -118 % , -120 % , -121 % , -123 %
Data -124 % , -126 % , -127 % , -129 % , -131 % , -132 % , -134 % , -136 % , -137 % , -139 %
Data -140 % , -142 % , -144 % , -145 % , -147 % , -149 % , -151 % , -152 % , -154 % , -156 %
Data -157 % , -159 % , -161 % , -163 % , -164 % , -166 % , -168 % , -170 % , -172 % , -173 %
Data -175 % , -177 % , -179 % , -181 % , -183 % , -184 % , -186 % , -188 % , -190 % , -192 %
Data -194 % , -196 % , -198 % , -200 % , -202 % , -204 % , -206 % , -208 % , -210 % , -212 %
Data -214 % , -216 % , -218 % , -220 % , -222 % , -224 % , -226 % , -228 % , -230 % , -232 %
Data -234 % , -236 % , -239 % , -241 % , -243 % , -245 % , -247 % , -250 % , -252 % , -254 %
Data -256 % , -259 % , -261 % , -263 % , -266 % , -268 % , -270 % , -273 % , -275 % , -277 %
Data -280 % , -282 % , -285 % , -287 % , -290 % , -292 % , -295 % , -297 % , -300 % , -302 %
Data -305 % , -307 % , -310 % , -313 % , -315 % , -318 % , -321 % , -323 % , -326 % , -329 %
Data -332 % , -334 % , -337 % , -340 % , -343 % , -346 % , -349 % , -351 % , -354 % , -357 %
Data -360 % , -363 % , -366 % , -369 % , -372 % , -375 % , -379 % , -382 % , -385 % , -388 %
Data -391 % , -394 % , -398 % , -401 % , -404 % , -408 % , -411 % , -414 % , -418 % , -421 %
Data -425 % , -428 % , -432 % , -435 % , -439 % , -442 % , -446 % , -450 % , -453 % , -457 %
Data -461 % , -465 % , -469 % , -472 %
 
'-------------------------------------------------------------------------------------------
Personal tools
Namespaces
Variants
Actions
Navigation
Language