-         

Ergebnis 1 bis 9 von 9

Thema: DS1820 auslesen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2005
    Beiträge
    25

    DS1820 auslesen

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hi!
    Ich habe ne C-Control und habe vier DS1820 angeschlossen (jeweils an einen digitalen Port). Nun habe ich aber ein Problem: Wie lese ich diesen Temperatursensor aus? Hat sich da schon einer mit diesem Thema beschäftigt und könnte mir vielleicht helfen?

    Viele Grüße

    Bernie

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.09.2004
    Beiträge
    264
    Unter http://c-control-support.de/ gibt es Demoprogramm hierzu.

    mfg

    Stefan

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2005
    Beiträge
    25
    *Räuspern* Die Seite habe ich auch schon durchsucht, aber ich find's da nicht. Ich seh da nur den einene Temperatursensor. Aber das ist doch kein DS1820, oder?

    mfg
    Bernie (dem hoffentlich geholfen werden kann )

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    06.05.2005
    Ort
    Berlin
    Beiträge
    212
    Hi,
    ich schätze, da hast Du dir was vorgenommen.
    Hab gerade mal das Datenblatt überflogen.
    Da gibt es ein wunderbares Kapitel über das
    "1- Wire Bus System". Wahrscheinlich ist das sowas wie der SMBus
    in neueren Rechnern.
    Das ist schon recht komplex für eine Ansteuerung/ Auswertung
    mit dem sperrigen Basic der C-Control. Die Daten
    müßten erst mal vom Port "abgepollt" und dann
    in Variable eingelesen werden. Umgekehrt, um den kleinen
    2-Draht-Wunderchip anzusprechen, mußt Du sie wieder Serialisieren.
    Im Prinzip bräuchtest Du hierfür 'ne zweite UART
    Denke, die Serielle der CC wird sich hierfür nicht
    mißbrauchen lassen.
    Falls Du jedenfalls noch nicht so viel Erfahrung hast,
    würde ich Dir eher empfehlen 'nen guten alten NTC oder PTC
    zu besorgen und das Ganze mit 'nem Spannungsteiler an den
    analogen Eingängen auszuprobieren.
    Dazu braucht's nicht so viel Code bzw. zusätzliche
    Komponenten, da die C-Control eigene A/D-Wandler hat.
    Viel Glück noch,

    tholan

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2005
    Beiträge
    25
    Hmm. Naja ich muss es erstmal mit nem DS1820 versuchen, da ich diese Dinger nun mal habe, bzw neu gekauft habe.
    Also ich fänds Klasse, wenn mir einer den Code (am besten ein Beispielprogramm) einfach mal geben könnte. (Vielleicht gibts den ja wirklich auf der Seite den Sugarman vorgeschlagen hat). Das Datenblatt vom DS1820 habe ich mir auch schon durchgelesen doch da verstehe ich (noch) nicht allzuviel von .

    Grüße
    Bernie

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    05.05.2005
    Ort
    ZH-Winterthur
    Beiträge
    99
    Die Sensoren kannst du dank dem 1-Wire Bus alle an den gleichen Port anschliesen.
    Dieser Assemblercode könnte ein Ansatz sein.

    Code:
    port            .equ $02        ; Port C 
    portdir         .equ $06        ; Datenrichtungsregister 
    ds18s           .equ 7          ; bit 7 
    ds18smask       .equ $80 
    
    bas_1           .equ $b7        ; erste Basic Variable => Fehlerrückgabe 
    bas_2           .equ $b8        ; zweite Basic Variable => Daten Rein&Raus 
    
    
                   .ORG $101 
                           
    reset          sei        ;mask any intr, as they inject heavy jitter 
                   bclr ds18s,port ; port low    
                   bset ds18s,portdir; Port als Ausgang                
                   lda  #$4b       ; 4b 75 * 10 5sec => ~750 5sec 
                   jsr  delay      ; in Warteschleife springen 
                   bclr ds18s,portdir; Port high Z 
                   lda  #$08       ; 8 * 10 5sec => ~80 5sec 
                   jsr  delay      ; warten auf PRESENCE-PULSE-DS1820 
                   lda  port       
                   and  #ds18smask  ; nur bit1, alle anderen maskieren 
                   bne  error      ; Fehler-Flag setzen 
                   lda  #$2d       ; erneut 45 * ~10 5sec => ~450 5sec 
                   jsr  delay 
    
    byte_send      lda  #$08       ; 08 Bits 
                   sta  bas_1 
                   bset ds18s,port 
                   bset ds18s,portdir         
    byte_send_b    bclr ds18s,port; Write 1 Slot ~5 5sec Port 1 Low 
                   clc             ; clear Carry bit 
                   ror  bas_2      ; in Carry schieben 
                   bcc  write0 
                   bcs  write1                                                           
    write0          bclr ds18s,port 
                   bra  weiter 
    write1         bset ds18s,port 
    weiter         lda  #$07       ; 7 * ~10 => 70 5sec delay 
                   jsr  delay 
                   bset ds18s,port 
                   dec  bas_1 
                   bne  byte_send_b 
                   cli        ;vor jedem rts ein cli nicht vergessen 
                   rts 
    
    byte_read      lda  #$08       ; 08 Bits 
                   sta  bas_1 
                   lda  #$00 
                   sta  bas_2 
    byte_read_b    bset ds18s,port; first set value, then drive, not vice versa 
                   bset ds18s,portdir 
                   bclr ds18s,port 
                   bclr ds18s,portdir 
                   nop             ; 14 5sec abwarten 
                   nop        ; wenn ein hochkapazitives oder langes Kabel verwendet wird, haben die Dallas Probleme    
                   nop        ; von 0 auf highZ in 14us zu kommen. Event muessesn dann mehr nops eingebaut werden. 
                   nop 
                   nop 
                   nop 
                   nop 
                   nop 
                   brset ds18s,port,rot   ; Bit in C lesen 
    rot            ror  bas_2 
                   lda  #$07       ; Gesamtzykluszeit abwarten (~60 5sec) 
                   jsr  delay 
                   dec  bas_1 
                   bne  byte_read_b 
                   bset ds18s,port 
                   bset ds18s,portdir 
                   cli 
                   rts 
    
    delay          ldx  #$02       ; ca. 10 5sec delay 
    inloop         decx             
                   bne  inloop 
                   deca       
                   bne  delay       
                   rts 
    
    error          lda  #$ff       ; Ein Fehler => 255 speichern    
                   sta  bas_1 
                   cli 
                   rts 
    
    .end
    Quelle: http://www.b-kainka.de/ccbsp.htm

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2005
    Beiträge
    25
    Jep auf diesen Code bin ich auch schon gestoßen. Ich werd mich mal intensiver damit auseinander setzen. (Muss auch erstmal lernen wie man mit Assemblercode umgeht). Falls noch einer mehr Code/Informationen zum Auslesen des DS1820 hat, bitte melden ja?!

    Schonmal herzlichen Dank,
    Bernie

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2005
    Beiträge
    25

    DS1820 Sensoren

    Hi, hier bin ich nochmal.
    Also so richtig weitergekommen bin ich nicht. Deshalb werde ich jetzt wohl oder übel auf NTC/PTC umsteigen und meine 4 DS1820-Sensoren bei ebay verticken.

    Trotzdem vielen Dank für die Tipps,

    Gruß Bernie

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.12.2003
    Beiträge
    163
    Hallo.....
    Für die M 2.0 gibt es einen IICBUS-1Wire-Bus
    converter. Auf c-control-support sind Demos
    zum Converter und DS1820.
    ciao....

Berechtigungen

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