-         
Ergebnis 1 bis 3 von 3

Thema: Temperatur berechnen per NTC 10k Ohm am ADC Kontrolle Wasserkühlung

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    24.03.2007
    Ort
    Titisee - Neustadt
    Alter
    40
    Beiträge
    266

    Temperatur berechnen per NTC 10k Ohm am ADC Kontrolle Wasserkühlung

    Anzeige

    Hallo,
    ich bin so langsam am verzweifeln.
    Ich will per Atmega mehrer 10k NTC auslesen.
    Warum gerade dieser Sensor, ich weiß 18B20 wäre einfacher.
    Aber es kommen 3 dieser Sensoren rein:
    https://www.aquatuning.de/wasserkueh...nde-g1/4?c=391

    Da diese direkt in den Kreislauf können.

    Aktuell Arbeite ich mit dem Atmega 328 wird aber später ein 256.
    Da ich es erst mal irgendwie ans laufen bekommen will.
    Testaufbau ist ein Arduino UNO mit DFF ROBOT LCD KEYPAD SHIELD.
    ADC auslesen klappt schon mal wunderbar.
    Nur wie bekomme ich eine Temperatur Wert da raus:

    Aktuellen Code hab ich mal angehängt. Ich hab ihn so gut wie möglich Dokumentiert. Das man auch den momentane Aufbau der Schaltung nachverfolgen kann.
    Ich hoffe Ihr könnt mir weiter Helfen.

    Code:
    'Programm zum Ansteuern des Arduino Uno mit DF ROBOT LCD Keypad Shield
    'Erweitert um NTC 10 KOhm Sensor.
    
    
    '---------- Atmega  -----------------------------------------------------
    
    'Controller: Original ATMega328
    'Quarz: 16MHz
    
    
    '---------- LCD  -----------------------------------------------------
    
    'Belegung LCD:
    'Backlight - PB2
    'DB4 - PD4
    'DB5 - PD5
    'DB6 - PD6
    'DB7 - PD7
    'RS - PB0
    'E - PB1
    
    
    '---------- Tastatur  -----------------------------------------------------
    
    'Belegung Tasten:
    'Über Widerstandsnetzwerk an PC0 (ADC0)
    
    'keine Taste gedrückt: 1023 - Abfrage auf ADC > 1000
    'Select: 739 - Abfrage auf ADC < 790
    'Links: 503 - Abfrage auf ADC < 555
    'Unten: 327 - Abfrage auf ADC < 380
    'Oben: 143 - Abfrage auf ADC < 195
    'Rechtst: 0 - Abfrage auf ADC < 50
    
    
    '---------- NTC  -----------------------------------------------------
    
    'Temperatur Messung:
    'NTC 10K an PC1 (ADC1)
    'NTC ueber 10K Wiederstand an VCC 5V
    
    '          VCC--10k---|-----NTC-----GND
    '                     |
    '                    PC1
    
    
    'V_a     Spannung am Messeingang
    'T_0     Nenntemperatur des NTC-Widerstands in K
    'R_0     Nennwiderstand des NTC-Sensors in Ohm
    'B       Materialkonstante B
    'Rv      Vorwiderstand in Ohm
    'Rn      Widerstand des NTC-Sensors temperaturabhängig
    
    
    '---------- Konfiguration Atmega -----------------------------------------------------
    
    $regfile = "m328pdef.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    
    
    '---------- LCD  -----------------------------------------------------
    
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
    Db7 = Portd.7 , E = Portb.1 , Rs = Portb.0
    Config Lcd = 16 * 2
    Cursor Off Noblink
    Cls
    
    
    '---------- ADC Port C --------------------------------------------------------
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    
    
    '---------- Beleuchtung LCD ---------------------------------------------------
    
    Config Portb.2 = Output                                     'PinB.2 als Ausgang für das LCD Backlight
    PortB.2 = 1
    
    
    '---------- Variablen  -----------------------------------------------------
    
    Dim Wert_von_tastatur As Word                                      'aktueller ADC-Wert
    Dim Wert_von_NTC As Word                                           'aktueller ADC-Wert
    Dim Rn As Single , Merke_1 As Single , Temp As Single
    
    
    '---------- Konstanten --------------------------------------------------------
    Const Rv = 10000
    Const R_0 = 10000
    Const B = 3900                                 '3528
    
    
    
    '---------- Hauptprogramm  -----------------------------------------------------
    
    do
    Wert_von_NTC = Getadc(1)                                     'adc-Wert einlesen
    Wert_von_tastatur = Getadc(0)                               'adc-Wert einlesen
    locate 1,1
    lcd "ADC0"
    locate 1,10
    lcd "ADC1"
    Gosub Berechnung
    
    locate 2,10                                                  'Ausgabe Wert ADC 1
      lcd "" ; Temp
    
    locate 2,1                                                    'Ausgabe Wert ADC 0
    lcd Wert_von_tastatur ;"
    
    
    'locate 2,10                                                  'Ausgabe Wert ADC 1
    'lcd Wert_von_NTC ;"
    
     waitms 600
    locate 2,1
    lcd "                "
    
    
    
    
    
    
    
    loop
    end
    
    '---------- Sub Berechnung  -----------------------------------------------------
    Berechnung:
      Temp = Wert_von_NTC * Rv
      Wert_von_NTC = 1024 - Wert_von_NTC
      Temp = Temp / Wert_von_NTC
      Temp = Temp / R_0
      Temp = Log(temp)
      Temp = Temp * 298
      Temp = Temp + B
      Temp = B / Temp
      Temp = Temp * 298
      Temp = Temp - 273
    
    
      return
    Aktueller Aufbau der Testschaltung:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Ketch NTC UNO.jpg
Hits:	5
Größe:	70,8 KB
ID:	33732
    Geändert von Lordcyber (01.11.2018 um 11:38 Uhr)
    MfG & THX
    Lordcyber
    Alias Michael

  2. #2

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.769
    H.. per Atmega mehrer 10k NTC .. ADC auslesen klappt schon mal wunderbar. Nur wie bekomme ich eine Temperatur Wert da raus ..
    Möglichkeit 1 (von vielen):
    Datenblatt des NTC nehmen, aus Deiner Schaltung den möglichen Spannungshub ausrechnen, zum Spannungshub des ADC ins Verhältnis setzen durch einfach Umrechnung auf ein gewünschtes Temperaturformat.
    Möglichkeit 2 (so mache ich es beim Motorcontroller für zwei 60Watt-Motörchen in meinem archie):
    Bei Regelungen - oder Alarmen - braucht man den Controller garnicht mit in eine Umrechnungsmühle zu zwängen, wenn man nicht unbedingt den tatsächlichen Temperaturwert anzeigen möchte/muss/soll. Ich schaue mir das Diagramm ADC-Werte-gegen-Temperaturensprechungen an und übersetze meine Schalt- oder Reaktionswerte in ADC-Digits. Mit den entsprechenden ADC-Messergebissen kann ich nun prima den Controller zu den Reaktionen bringen die er machen soll, ohne dass er lange rumrechnet. Wenn der ADC dann noch im free-runnig-Mode (mit Interrupt) ist erfolgt die Temperatur-Auswertung sozusagen nebenher.
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. [ERLEDIGT] NTC 10k für Wasserkühlung
    Von Ceos im Forum Software, Algorithmen und KI
    Antworten: 11
    Letzter Beitrag: 24.10.2018, 12:04
  2. Antworten: 13
    Letzter Beitrag: 07.01.2018, 11:50
  3. Temperatur berechnen
    Von Murus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 36
    Letzter Beitrag: 19.11.2006, 21:37
  4. Temperatur aus Binärwert berechnen
    Von jonas im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 17.10.2006, 17:19
  5. Bei PTC die Temperatur berechnen
    Von Robo2004 im Forum Sensoren / Sensorik
    Antworten: 5
    Letzter Beitrag: 03.06.2004, 19:04

Berechtigungen

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