- Labornetzteil AliExpress         
Ergebnis 1 bis 3 von 3

Thema: DS1820 Wert verarbeiten

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    44
    Beiträge
    642

    DS1820 Wert verarbeiten

    Anzeige

    Powerstation Test
    Hallo Leute,

    ich bin gerade dabei mir eine Temperaturegelung aufzubauen. Als Temperaturfühler dient dazu ein DS 1820.
    Ich habe das folgende prog aus dem www mal auf meinen Controller
    übertragen, das funktioniert auch alles einwandfrei.

    $regfile = "m8def.dat"
    $crystal = 3686411

    ' LCD konfigurieren Port auf Ausgabe setzten und Pin's entsprechend zuordnen
    Ddrd = &HFF
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 16 * 2

    ' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von Bascom durch Software realisiert
    Config 1wire = Portc.5

    Dim Ar(2) As Byte

    Cls

    Do
    1wreset
    1wwrite &HCC
    1wwrite &H44
    1wreset
    1wwrite &HCC
    1wwrite &HBE
    Ar(1) = 1wread(2)

    Waitms 500
    'Locate 1 , 1
    'Lcd Hex(ar(2)) ; Hex(ar(1))
    Locate 2 , 1
    Shift Ar(1) , Right , 1
    Lcd Ar(1)
    Loop

    End

    Soweit so gut, nun möchte ich den Ausgelesenen Wert "AR" auswerten.
    Wenn ich aber folgenden Code ergänze

    If Ar > 10 then
    Upperline
    LCD "Temp. zu hoch"
    end if

    Nur so funktioniert das nicht weil der Wert AR irgendwie umgewandelt werden muss.
    Aber wie?

    bin für jede Hilfe und Programmbeispiele dankbar.
    Neutro.
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Du musst nach dem Starten der Konvertierung (1wwrite &HCC , 1wwrite &H44) dem Sensor etwas Zeit geben, fertig zu werden.
    Hier solltest du ein Wait von 750ms einfügen, bvor du die Daten abfragst (1wwrite &HCC , 1wwrite &HBE). Ist zwar unschön, aberdas kann man später noch ändern.

    Umgewandelt hast du den Wert schon irgendwie.
    Shift Ar(1) , Right, 1 teilt dir den Wert durch 2. Aber das höchstwertige bit der Temperatur steht im niedrigstwertigen bit von Ar(2) und zusätzlich noch das Vorzeichen.
    Deswegen geht man meistens hin und macht erst ein
    Temp_int=MAKEINT(Ar(1),Ar(2)) eingefügt und dann wird geshiftet.
    Dann kannst du auch abfragen, ob Temp_int größer als 10 ist.

    Gruß

    Rolf

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    44
    Beiträge
    642
    @for_ro: Danke für die Hilfe, jetzt funktionierts.
    Allerdings ist der Temp_int Wert doppelt so hoch wie die Temperatur; ist ja auch klar weil noch nicht durch zwei geteilt wurde. Aber das lässt sich ja leicht
    umrechnen.

    MfG

    Neutro
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad