-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 30

Thema: Tempmessung mit NTC und Atmega 8.

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    15.01.2006
    Beiträge
    80

    Tempmessung mit NTC und Atmega 8.

    Anzeige

    Hallo,
    ich habe mal ein Programm geschrieben mit dem ich die Temperatur messen kann. Als Fühler nheme ich einen BMW(VDO) Temperaturfühler(NTC)
    Ich habe dann einen 1kohm widerstand und den NTC in reihe geschaltet und zwischen den beden Widerständen das Sognal für den ADC abgegriffen.

    Soweit so gut. Allerdings habe ich die Weerte nicht in Bascom berechnet sonder in excel und habe dann nur alle Wete eingegeben un dmit dem Case Befehl den richtigen wert ausgegeben.

    Jetzt meine Frage besteht die Möglichkeit das ich das auch direkt in Bascom berechne? Weil das ist ja nicht die feine Art. Klappt zwar hervorragend und auch recht genau. Aber es sind auch schon 91% des Speichers des Mega 8 belegt. Und ioch will ja auch noch ein Display und eine Druckmessung realisieren. Die Druckgeber haben eine Polynomfunktion direkt angegeben. Damit kann ich doch eigentlich direk den Druck errechnen, oder? Ich muss doch dann nur aus dem Strom und der Spannung den Widerstand errechnen und darauss dann den Druck, oder?


    Hänge den code einfach mal dran. Könnt ihr euch ja mal angucken. Und vielleicht ein paar Tips geben.

    Cia Marco
    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 9600
    
    Declare Sub Fall
    
    Dim Temp As Integer
    Dim Volt As Integer
    
    Ddrb = &B00000001
    Original Alias Pinb.3
    Auf Alias Pinb.5
    Zu Alias Pinb.4
    Relais Alias Portb.0
    
    Set Portb.3
    Set Portb.4
    Set Portb.5
    
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    
    Start Adc
    Cursor Off
     Cls
             Locate 1 , 2
             Lcd Chr(239) ; "ltemp:"
             Locate 1 , 13
              Lcd Chr(223) ; "C"
             Lowerline
             Lcd Chr(239) ; "ltemp2:"
             Locate 2 , 13
             Lcd Chr(223) ; "C"
    
    Do
    
    Volt = Getadc(0)
             Locate 1 , 9
             Fall
    Volt = Getadc(1)
             Locate 2 , 9
             Fall
    
             Waitms 10
    Loop
    End
    
    
    Sub Fall
    Select Case Volt
    Case 0 To 515
    Lcd " LO "
    Case 515 To 525
    Lcd " 21 "
    Case 525 To 535
    Lcd " 22 "
    Case 535 To 545
    Lcd " 23 "
    Case 545 To 556
    Lcd " 24 "
    Case 556 To 567
    Lcd " 25 "
    Case 567 To 576
    Lcd " 26 "
    Case 576 To 585
    Lcd " 27 "
    Case 585 To 595
    Lcd " 28 "
    Case 595 To 605
    Lcd " 29 "
    Case 605 To 616
    Lcd " 30 "
    Case 616 To 625
    Lcd " 31 "
    Case 625 To 634
    Lcd " 32 "
    Case 634 To 643
    Lcd " 33 "
    Case 643 To 653
    Lcd " 34 "
    Case 653 To 662
    Lcd " 35 "
    Case 662 To 670
    Lcd " 36 "
    Case 670 To 679
    Lcd " 37 "
    Case 679 To 687
    Lcd " 38 "
    Case 687 To 696
    Lcd " 39 "
    Case 696 To 705
    Lcd " 40 "
    Case 705 To 713
    Lcd " 41 "
    Case 713 To 720
    Lcd " 42 "
    Case 720 To 728
    Lcd " 43 "
    Case 728 To 736
    Lcd " 44 "
    Case 736 To 744
    Lcd " 45 "
    Case 744 To 751
    Lcd " 46 "
    Case 751 To 758
    Lcd " 47 "
    Case 758 To 765
    Lcd " 48 "
    Case 765 To 772
    Lcd " 49 "
    Case 772 To 779
    Lcd " 50 "
    Case 779 To 785
    Lcd " 51 "
    Case 785 To 791
    Lcd " 52 "
    Case 791 To 798
    Lcd " 53 "
    Case 798 To 804
    Lcd " 54 "
    Case 804 To 811
    Lcd " 55 "
    Case 811 To 816
    Lcd " 56 "
    Case 816 To 821
    Lcd " 57 "
    Case 821 To 827
    Lcd " 58 "
    Case 827 To 832
    Lcd " 59 "
    Case 832 To 838
    Lcd " 60 "
    Case 838 To 843
    Lcd " 61 "
    Case 843 To 847
    Lcd " 62 "
    Case 847 To 852
    Lcd " 63 "
    Case 852 To 857
    Lcd " 64 "
    Case 857 To 862
    Lcd " 65 "
    Case 862 To 866
    Lcd " 66 "
    Case 866 To 870
    Lcd " 67 "
    Case 870 To 874
    Lcd " 68 "
    Case 874 To 878
    Lcd " 69 "
    Case 878 To 882
    Lcd " 70 "
    Case 882 To 886
    Lcd " 71 "
    Case 886 To 889
    Lcd " 72 "
    Case 889 To 893
    Lcd " 73 "
    Case 893 To 897
    Lcd " 74 "
    Case 897 To 900
    Lcd " 75 "
    Case 900 To 903
    Lcd " 76 "
    Case 903 To 906
    Lcd " 77 "
    Case 906 To 909
    Lcd " 78 "
    Case 909 To 913
    Lcd " 79 "
    Case 913 To 916
    Lcd " 80 "
    Case 916 To 918
    Lcd " 81 "
    Case 918 To 921
    Lcd " 82 "
    Case 921 To 924
    Lcd " 83 "
    Case 924 To 926
    Lcd " 84 "
    Case 926 To 929
    Lcd " 85 "
    Case 929 To 931
    Lcd " 86 "
    Case 931 To 934
    Lcd " 87 "
    Case 934 To 936
    Lcd " 88 "
    Case 936 To 938
    Lcd " 89 "
    Case 938 To 941
    Lcd " 90 "
    Case 941 To 943
    Lcd " 91 "
    Case 943 To 945
    Lcd " 92 "
    Case 945 To 947
    Lcd " 93 "
    Case 947 To 949
    Lcd " 94 "
    Case 949 To 951
    Lcd " 95 "
    Case 951 To 952
    Lcd " 96 "
    Case 952 To 954
    Lcd " 97 "
    Case 954 To 956
    Lcd " 98 "
    Case 956 To 957
    Lcd " 99 "
    Case 957 To 959
    Lcd "100 "
    Case 959 To 961
    Lcd "101 "
    Case 961 To 962
    Lcd "102 "
    Case 962 To 963
    Lcd "103 "
    Case 963 To 965
    Lcd "104 "
    Case 965 To 966
    Lcd "105 "
    Case 966 To 968
    Lcd "106 "
    Case 968 To 969
    Lcd "107 "
    Case 969 To 970
    Lcd "108 "
    Case 970 To 971
    Lcd "109 "
    Case 971 To 973
    Lcd "110 "
    Case 973 To 974
    Lcd "111 "
    Case 974 To 975
    Lcd "112 "
    Case 975 To 976
    Lcd "113 "
    Case 976 To 977
    Lcd "114 "
    Case 977 To 978
    Lcd "115 "
    Case 978 To 979
    Lcd "116 "
    Case 979 To 980
    Lcd "117 "
    Case 980 To 981
    Lcd "118 "
    Case 981 To 982
    Lcd "119 "
    Case 982 To 983
    Lcd "120 "
    Case 983 To 1025
    Lcd " HI "
    End Select
    
    End Sub
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Ja,das funktioniert aber ist etwas "Windowslike".

    Leg dir ne gröbere Tabelle an (zb 5° Schritte)
    Mit dem Gemessenen Wert und der Tabelle kannste dann die Temperatur errechnen.
    Mit der Formelrechnung biste wesentlich kürzer im Code und hast dann mehr platz für Anderes.
    Gruß
    Ratber

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    15.01.2006
    Beiträge
    80
    Ja deswegen frage ich ja hier nach weil ich wollte eigentlich keinen größeren uC nehmen.

    Wie meinst du das ,mit der gröberen Tabelle? und wie kome ich auf die Teilschritte? Einfach 3satz oder wie? Obwohl stimmt ja habe ich ja jetzt auch gemacht. Somit hätte ich nur ein 5.tel der Daten, müsste aber dann nochmal rechnen. Oder versteh ich da jetzt was falsch?

    ciao Marco

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    25.12.2005
    Beiträge
    97
    Gibt es in Bascom einen Befehl wie bei C++ der heist "table"?
    wie zb..
    Code:
    kt ist Kesseltemperatur
    ks ist Kesselsensor(AD-Wert)
    Looktab verweis zu einer Tabelle
    tempe Name der Tabelle
    
    
    kt=looktab(tempe,ks)
    
    table tempe
    0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8
    8 9 9 10 10 11 11 12 12 12 13 13 14 14 14 15 15 16
    16 16 17 17 18 18 18 19 19 20 20 20 21 21 22 22 22 23 23 23
    24 24 25 25 25 26 26 27 27 27 28 28 29 29 29 30 30 31 31 31
    32 32 32 33 33 34 34 34 35 35 36 36 36 37 37 38 38 38 39 39
    40 40 40 41 41 42 42 42 43 43 43 44 44 45 45 45 46 46 47 47
    47 48 48 49 49 49 50 50 51 51 51 52 52 52 53 53 54 54 54 55
    55 56 56 56 57 57 58 58 58 59 59 60 60 60 61 61 62 62 62 63
    63 63 64 64 65 65 65 66 66 67 67 67 68 68 69 69 69 70 70 71
    71 71 72 72 72 73 73 74 74 74 75 75 76 76 76 77 77 78 78 78
    79 79 80 80 80 81 81 82 82 82 83 83 83 84 84 85 85 85 86 86
    87 87 87 88 88 89 89 89 90 90 91 91 91 92 92 92 93 93 94 94
    94 95 95 96 96 96 97 97 98 98 98 99 99 100 100
    end table

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    15.01.2006
    Beiträge
    80
    Mal ne Frage zu dem c++ Code!
    Sehe ich das richtig das das Programm einen bestimmten wert in der Tabelle sucht und den dazugehörigen Partner dann den Wert zuweist??

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    25.12.2005
    Beiträge
    97
    so ist´s richtig wie su es siehst.
    Wenn du nachzählst sind es 255 oder 256 Zahlen von 0-100
    und ad-wert =1 => tab-wert=0
    ad-wert =256 => tab-wert=100

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2004
    Ort
    Bürstadt
    Alter
    30
    Beiträge
    383
    Es gibt so einen Befehl schau ma in der Bascom Hilfe nach "Lookup"

    MfG
    Ringo
    Nobody is Perfect
    Visit www.ringo.roboterbastler.de last update: 23.05.2009

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Zitat Zitat von astro9481
    Ja deswegen frage ich ja hier nach weil ich wollte eigentlich keinen größeren uC nehmen.

    Wie meinst du das ,mit der gröberen Tabelle? und wie kome ich auf die Teilschritte? Einfach 3satz oder wie? Obwohl stimmt ja habe ich ja jetzt auch gemacht. Somit hätte ich nur ein 5.tel der Daten, müsste aber dann nochmal rechnen. Oder versteh ich da jetzt was falsch?

    ciao Marco
    Das ist einfache Mathematik.
    Du hast 2 Eckwerte.
    zb. 1926 Ohm für 20° und 2000 für 25°
    Bei 1K als Vorwiderstand an 5V sind das 3.291V und 3.333V.
    Also 42mV differenz auf 5° .
    macht also 8.4mV pro Grad.
    Der Rest ist Rechnen.
    Auf dem Papier haste es ja schon getan also mußte das einfach nur nochmal als Programm umsetzen.

    Zur Größe des Controllers.:

    Ich hab ne komplette Lüftersteuerung mit PWM,Tempfühler,Drehzahlkennlinie für den Lüfter und Serieller Komunikaton unter Bascom in nen Tiny13 gesteckt und immernoch satte 132 Byte Flash frei.
    Das reicht noch für nen 2. Kanal hab ich mir gesagt und es ging dann auch leichten änderungen am Code.
    Als dann immernoch 73 Byte Flash frei waren hab ich der Schaltung noch nen Alarmausgang spendiert wo ein einfacher Piezosummer darüber informiert wenn die Temp. ausserhalb des zugelassenen Bereiches liegt.

    Es ist also kein großer Controller nötig wenn man sich nur etwas mühe gibt.
    Studiere die Hilfe mal durch.
    Es gibt ne Menge Bfehle die einem helfen.

    Edit:Schreibfehler.
    Gruß
    Ratber

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    15.01.2006
    Beiträge
    80
    Ja ok, so meinte ich das ja auch. Ich berechne die werte für alle 5°C schritte und den rest rechne ich dann um. Habe ich ja in Excel auch so gemacht. Werde mich da nachher mal ran begeben. Melde mich dann später nochmal.

    Ciao Marco

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    15.01.2006
    Beiträge
    80
    Nochmal zum Verständnis, die werte für alle 5°C gebe ich aber weiterhin ein, oder? Und rechne dann nur die zwischenräume aus.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •