-
        

Seite 1 von 8 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 76

Thema: Celsius - Volt umrechnen mit Basom

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.02.2007
    Ort
    Brig-Glis
    Alter
    24
    Beiträge
    277

    Celsius - Volt umrechnen mit Basom

    Anzeige

    Hallo Leute,

    Ich hab ein Problem, zwar habe ich einen LM335 per Spannungsteiler (Festwiederstand ist 2.2kOhm) mit dem Portc.2 (ADC2) Pin eines Atmega48 verbunden. Später soll die Temperatur über ein bereits angeschlossenes LCD display in °C ausgegeben werden.

    Jedoch habe ich keinen Plan, wie ich diese Volt Zahl in °C umrechnen kann. Das ganze kann von mir aus um bis zu 3-5°C ungenau sein. Ich habe gelesen, dass der LM335 bei 25°C 2.92Volt bringt und 10mV/K erhöht bzw. verringert. Diese Daten habe ich im Exel als Tabelle eingegeben und berchnen lassen.

    Ich habe die SuFu benutzt und gegoogelt, da habe ich dutzende Beiträge gefunden, jedoch nichts das funktionierte.

    Könnt ihr mir bitte helfen?


    Mfg JeyBee

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    @JeyBee:
    Wenn du die einfachste Schaltung mit Serienwiderstand genommen hast (Datenblatt: Basic Temperature Sensor), dann brauchst du ja nur die Spannung (oder den Digitalwert deines ADC) bei einer bekannten Temperatur zu messen. Je Grad Celsius verändert sich die Spannung dann um 10 mV (0,01 V).
    Das ist alles.
    Bei einer Referenzspannung von 5 V hast du ca. 2 Digits deines ADCs pro Grad Celsius zur Verfügung.
    Bei einer Referenzspannung von 2,5 V sind das schon 4 Digits, also eine theoretische Auflösung von 1/4 Grad.

    Gruß Dirk

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.02.2007
    Ort
    Brig-Glis
    Alter
    24
    Beiträge
    277
    Hallo Drik,

    Dich kenn ich doch

    Danke für deine schnelle Antwort. Aber kannst du mir bitte das mit den Digits etwas genauer erklären? Das verstehe ich leider noch nicht ganz.
    Das mit den 0.01Volt pro °C habe ich bereits mittels Exel berechnet, ich habe die Tabelle als Anhang hinzugefügt.

    Wie kann ich aber Bascom das beibringen? Ich kann ja (leider) nicht die Exel Tabelle ins Bascom kopieren. Kannst du mir dies bitte etwas erläutern?


    Mfg JeyBee

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.07.2007
    Alter
    33
    Beiträge
    214
    Naja, wenn du 5V Referenz hast und einen 10-Bit ADC macht das 5.0/1023 = 0,00489 Volt = ca. 5 mV pro ADC-Digit. (am besten vorher messen was dein Spannungsregler ausgibt. Das kann auch 100-200 mV über oder unter den 5V liegen. Dann natürlich mit dem echten Wert rechnen und nicht mit den 5.0 Volt)

    D.h. dein ADC zeigt dir Temperaturänderungen von 0,5°C an.
    Das ist genauer, als der LM335 selbst überhaupt messen kann, also mehr als ausreichend.

    Beispiel: Wenn dein ADC bei 25°C eine Spannung
    von 2,920 Volt misst, zeigt er dir bei 5.0V Referenz einen ADC-Wert von 597 an.
    von 2,925 Volt misst, zeigt er dir bei 5.0V Referenz einen ADC-Wert von 598 an, was 25,5°C entspricht.

    Du musst also nur als Referenzwert die "597" speichern, den aktuell gemessenen ADC-Wert von dieser Referenz abziehen (das Ergebnis ist dann die Differenz zu 25°C) und dann noch *0.5 rechnen (weil ja 1 ADC-Wert = 0,5°C entspricht). Jetzt hast du die Differenz in °C und addierst die noch zu den 25°C. Dann hast du deine Temperatur in °C.

    Der ABSOLUT-Wert kann duch die ganzen Ungenauigkeiten (Vorwiderstand, Bauteiltoleranzen des LM335, ect. pp.) mehrere Grad daneben liegen, aber RELATIV misst der Sensor sehr genau.
    Das wird dich aber sicher nicht stören, da du es eh nicht kontrollieren kannst - es sei denn du hast zu Hause ein richtiges Präzisions-Thermometer zum Abgleich.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.02.2007
    Ort
    Brig-Glis
    Alter
    24
    Beiträge
    277
    Vielen, vielen dank, Cairol,

    Das hat mir sehr weiter geholfen. Jeodoch kriege ich jetzt auf dem LCD einen Wert von 29.89 bzw. wenn ich noch +25(°C) rechne kriege ich 323.5 ausgegeben. Zwei Termometer zeigen allerdings eine termperatur von 22°C.
    Wie kann ich diesen Fehler beheben? ich habe diese 597 verändert, jedoch half das nicht wirklich weiter.

    P.S: das Multimeter zeigt 5.09Volt als Referenz Spannung an.

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    38
    Beiträge
    642
    wähle deinen Multiplikationsfaktor doh einfach so das 2°C angezeigt werden.
    Wenn du 2°C Messwert hast und eine Anzeige zeigt ca 30 °C an musst du den Multiplikationsfaktor um 15 nach unten ändern.
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.02.2007
    Ort
    Brig-Glis
    Alter
    24
    Beiträge
    277
    Edit schon erstellt sry: ich meinte 22°C

    Hier mal den Code: Bitte sagt mir was ich falsch mache, ich komme mir so blöd vor Das Problem: Das Projekt ist für die Schule -> begrenzte Frist.

    Code:
    $regfile "m48def.dat"
    $crystal = 8000000
    
    Config Pinc.4 = Input
    Portc.4 = 0
    
    Config Portb = Output
    Config Portd = Output
    Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.5 , Db6 = Portb.7 , Db7 = Portb.6 , E = Portd.7 , Rs = Portb.0
    Config Lcd = 16 * 2
    
    Config Adc = Single , Prescaler = Auto
    Config Portc.0 = Input
    Const Ref = 5.09 / 1023
    
    
    Dim W As Word
    Dim Z1 As Single
    Dim Z2 As Single
    Dim Z3 As Single
    
    Dim Temp As Single
    
    Do
    Portb.1 = 1
    
    W = Getadc(2)
    
    Z1 = 597 - W
    Temp = Z1 * 0.5
    
    
    
    Cls
    Lcd Temp
    Waitms 300
    
    Loop

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    38
    Beiträge
    642
    Als estes kannst du den Wert Const Ref direkt eingeben also 0.004975. Das Spart Speicherkapazität.
    Um den angezeigten Wert zu berichtigen änderst du die Zeile
    Temp = Z1 * 0.5 in
    Temp = Z1 * 0.367
    dann sollte der angezeigte Wert mit dem Messwert übereinstimen.
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.02.2007
    Ort
    Brig-Glis
    Alter
    24
    Beiträge
    277
    Danke, du bist echt hilfreich. Jedoch hat mir das Sehr Wenig gehohlfen. Ich kriege nun den Wert -63.4xxx zurück.
    Langsam fühle ich mich so richtig Miess. Stimmt die Hardware villeicht nicht?

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    38
    Beiträge
    642
    Schau dir mal diesen link an:
    http://www.mikrocontroller.net/topic/88128
    ich denke mal das dir das Weiterhelfen wird. Schreib dein Programm mal an den betreffenden Stellen so um wie es da gemacht wurde, dann muss das funktionieren. Ich selber arbeite auch immer nach diesem Schema und bei mir hat das immer hingehauen.
    Hilfreich ist es auch sich den Messwert vom ADC port mal auf dem LCD anzeigen zu lassen und mit dem Multimeter den Angezeigten mit dem gemessenen Wert zu vergleichen. Wenn das übereinstimmt dann kannst du die Umrechnung einfügen und diese anzeigen lassen und dann den Multiplikationsfaktor entspechend anpassen bis der Messwert mit dem angezeigen übereinstimmt (Kalibrieren)
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

Seite 1 von 8 123 ... LetzteLetzte

Berechtigungen

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