- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 9 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 88

Thema: mehrere DS18S20 an einem 1 wire Bus

  1. #21
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Anzeige

    Powerstation Test
    Hallo Tobias,
    meine eeprom Einträge zeigen die 64bit Adressen meiner 5 Sensoren.
    Ich habe sie vorher ausgelesen und dann fest ins Programm (eeprom) eingetragen. Mit meinem Programmer muss ich die eeprom Daten separat vom Programm übertragen. Das eeprom kann nur beschränkt neu beschrieben werden, also Vorsicht.
    Die Ccr8 Tabelle verwendet ACsenf, um die Checksum zu überprüfen. Kann er wohl besser erklären. Ich benutze den Check überhaupt nicht, da ich noch nie Probleme mit der Übertragung hatte.
    Gruß Rolf

  2. #22
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Vielen Dank,
    also kann ich den Block $eeprom einfach weg lassen oder?
    ->Das eeprom kann nur beschränkt neu beschrieben werden...
    Ich möchte die Temp. Daten gerne speichern und später über RS232 übertragen - gibt es auch Bausteine die man "belibig" neu beschreiben kann? Also gibt es da so ne Art "Arbeitsspeicher" wie bei einem PC? Ich wollte ca 10 Temp. Sensoren und noch3-4 andere speichern - gemessen über 2-3 Tage müsste man mal ausrechnen wieviel Speicher da benötigt wird.

    Tobias

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    27.02.2006
    Ort
    Gessertshausen
    Alter
    52
    Beiträge
    97
    Hi miteinander,
    hab mal im Datenblatt (hab ich auf meiner Page im Downloadbereich) nachgesehen und da ist der AT24C256 mit 100.000 Schreibzyklen angegeben.
    Bei einem richtigen RAM-Baustein brauchst du halt eine Pufferbatterie, da die Daten sonst futsch sind. Da es hier aber auch LowPower-Varianten geben dürfte, wird das die eh benötigte Batterie für den Datenlogger nicht allzusehr belasten.
    Gruß, Berni.
    www.befi-tec.de

  4. #24
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627

    0,1°C statt 0,5°C Schritte?

    Hallo,
    hier wurde lange nicht mehr geschrieben aber ich versuchs mal

    Das Programm läuft soweit, aber die Temperatur springt in 0,5°C Schritten - warum nicht in 0,1°C Schritten?
    Und das zweite Problem ist ein Anzeige Problem:
    Ôeíðåòáôõò 1: 27.0°Ã
    Ôåíðåòáôõr 2: 26.5°Ã

    Ja was ist denn da falsch? Temperatur 1: wäre besser als Ôeíðåòáôõò

    Hat jemand eine Idee?

    Tobias

    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000
    $baud = 9600
    
    Config 1wire = Portb.0
    
    
    
    
    Dim T1 As single
    Dim T2 As Single
    Dim I As Byte
    Dim Id1(8) As Byte
    Dim Id2(8) As Byte
    Dim Ar1(2) As Byte
    Dim Ar2(2) As Byte
    
    
    
    
    
    Id1(1) = 1wsearchfirst()
    Id2(1) = 1wsearchnext()
    
    
    Do
    Print " "
    1wreset                                                     'reset
    1wwrite &H55                                                'Match Rom command
    1wwrite Id1(1) , 8                                          'Id von Sensor 1
    1wwrite &H44                                                'Convert T
    
    Waitms 300                                                  'warten bis convert T fertig ist
    1wreset                                                     'reset
    1wwrite &H55                                                'match rom command
    1wwrite Id1(1) , 8                                          'id von sensor 1
    1wwrite &HBE                                                'scratchpad lesen
    Ar1(1) = 1wread(1)                                          'erstes byte auslesen, da steht Temp drin
    Ar1(2) = 1wread(1)                                          'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen
    
    
    Waitms 500
    1wreset                                                     'reset
    1wwrite &H55                                                'Match Rom command
    1wwrite Id2(1) , 8                                          'Id von Sensor 2
    1wwrite &H44                                                'Convert T
    
    Waitms 300                                                  'warten bis convert T fertig ist
    1wreset                                                     'reset
    1wwrite &H55                                                'match rom command
    1wwrite Id2(1) , 8                                          'id von sensor 2
    1wwrite &HBE                                                'scratchpad lesen
    Ar2(1) = 1wread(1)                                          'erstes byte auslesen, da steht Temp drin
    Ar2(2) = 1wread(1)                                          'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen
    
    T1 = Ar1(1) / 2
    T2 = Ar2(1) / 2
    
    
    
    
    
    
        If Ar1(2) = 0 Then                                      'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg
           Print "Temperatur 1:  " ; T1 ; "°C"
    
         Else
          Print "Temperatur 1: " "-" ; T1 ; "°C"
    
        End If
    
    
            If Ar2(2) = 0 Then                                  'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg
           Print "Temperatur 2:  " ; T2 ; "°C"
    
         Else
          Print "Temperatur 2: " "-" ; T2 ; "°C"
        End If
    
    
    Waitms 500
    
    Loop

  5. #25
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    52
    Beiträge
    765
    Da scheint die Baudrate nicht zu stimmen. Sollte am PC die gleiche wie am Mega8 sein.

  6. #26
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    hhmmm - die Baudrate ist aber ganz sicher richtig...

    das merkwürdige ist nur, dass die Zahlen fast immer richtig rüber kommen....

    Tobias

  7. #27
    Benutzer Stammmitglied
    Registriert seit
    27.05.2007
    Beiträge
    67
    Zitat Zitat von TobiasBlome
    hhmmm - die Baudrate ist aber ganz sicher richtig...
    das merkwürdige ist nur, dass die Zahlen fast immer richtig rüber kommen....
    Tobias
    Der DS1820 braucht 750ms um nach einem "Convert T" die Wandlung durchzuführen. Änder mal den Wert "Waims 300" auf "Waitms 800" nach dem Convert T Befehl "1wwrite &H44".
    Das ist aber nicht das eigentliche Problem. Denn die Werte vom DS1820 kommen ja "fast" immer richtig an bei dir.
    Ich tippe darauf, dass deine Einstellung bei Crystal nicht stimmt. Hast du einen externen Quarz?
    Taktest du mit dem internen Takt?

    Zu deinem zweiten Problem. Warum 0,5 Schritte und nicht 0,1 Schritte.
    Du musst die Genauigkeit erst errechnen. Wie das geht, wurde schon im Forum gelöst. Ich kann dir aber, wenn du nichts findest, den Link nachschauen.

    Grüße Eisbaeeer

  8. #28
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    -> Genauigkeit: bitte link schicken

    -> Crystal: Also ich benutze den internen 1MHz Takt

  9. #29
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    44
    Beiträge
    689
    Der interne Takt von 1MHZ ist für 9600 sehr schlecht geeignet da Du einen Baudratenfehler von -7% hast.

    Entweder die Baudrate auf 4800 ändern oder den internen Takt auf 4MHz einstellen.

    MfG

  10. #30
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Hallo Eisbaeeer
    meinst du den Beitrag von AVRwalli?

    Code:
    Sub 18s20_auslesen 
        1wreset Pinc , F                                        ' Reset 
        1wwrite Skip_rom , 1 , Pinc , F                         ' Chip ansprechen 
        1wwrite Read_ram , 1 , Pinc , F                         ' Befehl zum Auslesen des Rams 
        Bd(1) = 1wread(9 , Pinc , F)                            ' 9 Bytes lesen 
        1wreset Pinc , F                                        ' Reset 
        Temp = Bd(2) 
        Shift Temp , Left , 8 
        Temp = Temp + Bd(1) 
        If Temp > $f000 Then 
          Temp = $ffff - Temp 
          Temp1 = Temp + 1 
          Grad = Temp1 * -0.0625 
        Else 
          Grad = Temp * 0.0625                                  ' Auflösung 12 Bit 
        End If 
    End Sub

Seite 3 von 9 ErsteErste 12345 ... LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad