Op Elektronicaforum.nl is de kans om een antwoord op je vraag te krijgen heel groot. In overzichtelijke subcategorieën kun je vragen en antwoorden over elektronica zoeken, plaatsen en beantwoorden.
Elektronica Forum is onderdeel van Schakelingen Online
 


 
Temperatuur meten met DS1820

 
Plaats nieuw bericht   Plaats Reactie    Schakelingen Online Forum Index -> Digitaal
Auteur Bericht
Sir Stonehill



Geregistreerd op: 1-9-2009
Berichten: 22
Woonplaats: Londerzeel, Vlaams Brabant, Belgie

BerichtGeplaatst: Do 19 Aug 2010, 15:11    Onderwerp: Temperatuur meten met DS1820 Reageer met quote

Hoi allemaal,

Ik ben een thermostaat aan het maken en deze is bijna af, buiten mijn temperatuurmeting.
Ik programmeer in (pic)basic en gebruik 2 7-segment's als display.

Van de site van picbasic.nl heb ik dit:
Code:
OWRITE PORTA.0, 1, [$CC, $44]    ;Zend 'Convert' opdracht (temperatuur meten)
OWRITE PORTA.0, 1, [$CC, $BE]    ;Zend 'Read ScratchPad' opdracht
OREAD  PORTA.0, 2, [Temperatuur] ;Lees temperatuur en plaats dit in de variabele


Maar het enige dat ik op mijn display's krijg is 55 (van 255).

Ik heb al veel op andere fora gezocht maar geen resultaat.
Kan iemand helpen?

Sir Stonehill
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Bekijk de homepage
stynus
Moderator
Moderator


Geregistreerd op: 16-5-2003
Berichten: 5533
Woonplaats: Lommel (België)

BerichtGeplaatst: Do 19 Aug 2010, 16:30    Onderwerp: Reageer met quote

Heb je niet toevallig de DS18B20? Die moet je lichtjes anders uitlezen.
_________________
Met vriendelijke groet,
Stynus
http://www.elektronicastynus.be

--> Elektronica bouwpakketten en componenten te koop. <--
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Bekijk de homepage
Sir Stonehill



Geregistreerd op: 1-9-2009
Berichten: 22
Woonplaats: Londerzeel, Vlaams Brabant, Belgie

BerichtGeplaatst: Do 19 Aug 2010, 16:46    Onderwerp: Reageer met quote

DALLAS
DS1820
0924C3
+078AC

Dit is wat er op staat, dus ik veronderstel dat dit geen DS18B20 is.

Sir Stonehill
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Bekijk de homepage
Sir Stonehill



Geregistreerd op: 1-9-2009
Berichten: 22
Woonplaats: Londerzeel, Vlaams Brabant, Belgie

BerichtGeplaatst: Di 24 Aug 2010, 15:13    Onderwerp: Reageer met quote

Ok, door een stomme fout (die ik niet ga vertellen) krijg ik er al data uit.

Maar niet de juiste, ik krijg constant 85°C.

Wel vreemd want ik heb een simulatieprogramma en deze is toch in staat om met mijn code de juiste temp uit de Dallas te krijgen, en op mijn bordje lukt het niet.

Ik heb al vele fora afgezocht, maar geen resultaat, altijd 85.

Misschien vinden jullie nog iets dat werkt, of heb ik erover gezien.
Alle hulp is welkom!

Sir Stonehill
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Bekijk de homepage
Stanley



Geregistreerd op: 5-6-2007
Berichten: 11

BerichtGeplaatst: Za 16 Okt 2010, 15:48    Onderwerp: Reageer met quote

Heb je het al werkend?
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
vandam



Geregistreerd op: 24-10-2008
Berichten: 77
Woonplaats:

BerichtGeplaatst: Zo 17 Okt 2010, 0:05    Onderwerp: Reageer met quote

Moet met dit verhaal toch wel lukken lijkt mij: http://www.picbasic.nl/electro_ds1820.htm
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
Stanley



Geregistreerd op: 5-6-2007
Berichten: 11

BerichtGeplaatst: Zo 17 Okt 2010, 9:38    Onderwerp: Reageer met quote

Dit alleen als je geen gebruik maakt van interups, interupts en oread / owrite werken niet goed samen. Je moet dan de 1-wire functies zelf maken.

Voorbeeldje:
Code:

' Initialize DS1820 and check for presence 
    init1820: 
    Low DQ               ' Set the data pin low to init 
    DelayMS 520          ' Wait > 480us 
    DQ_DIR = 1           ' Release data pin (set to input for high) 
    DelayUS 100          ' Wait > 60us 
    If DQ = 1 Then
        Lcdout $fe, 1, "DS1820 not present"
        DelayMS 500 
        GoTo Start     ' Try again 
    EndIf
    DelayUS 520          ' Wait for end of presence pulse 
Return

' Write "dq_command" byte to the DS1820 
write1820: 
    For I = 1 To 8       ' 8 bits to a byte 
        If DQ_Command.0 = 0 Then
            GoSub write0    ' Write a 0 bit 
        Else
            GoSub write1    ' Write a 1 bit 
        EndIf
        DQ_Command = DQ_Command >> 1  ' Shift to next bit       
    Next I 
Return

' Write a 0 bit to the DS1820 
write0: 
    Low DQ 
    DelayUS 60              ' Low for > 60us for 0 
    DQ_DIR = 1              ' Release data pin (set to input for high) 
Return

' Write a 1 bit to the DS1820 
write1: 
    Low DQ                  ' Low for < 15us for 1 
    DelayUS 1               ' Delay 1us 
    DQ_DIR = 1              ' Release data pin (set to input for high) 
    DelayUS 59              ' Use up rest of time slot 
Return

' Read data from the DS1820 
read1820: 
    For I = 1 To 8                ' 8 bits to a Byte 
        TMP = TMP >> 1        ' Shift down bits 
        GoSub readbit           ' Get the bit to the top of dq_temp 
    Next I 
Return

' Read a bit from the DS1820 
readbit: 
    TMP.7 = 1               ' Preset read bit to 1 
    Low DQ                   ' Start the time slot 
    DelayUS 1               ' Delay 1us 
    DQ_DIR = 1            ' Release data pin (set to input for high) 
    DelayUS 1
    If DQ = 0 Then 
        TMP.7 = 0           ' Set bit to 0 
    EndIf
    DelayUS 60             ' Wait out rest of time slot 
Return

Naar boven
Bekijk gebruikers profiel Stuur privé bericht
Plaats nieuw bericht   Plaats Reactie    Schakelingen Online Forum Index -> Digitaal Tijden zijn in GMT + 2 uur
Pagina 1 van 1                     

 
Ga naar:  
Je mag geen nieuwe onderwerpen plaatsen
Je mag geen reacties plaatsen
Je mag je berichten niet bewerken
Je mag je berichten niet verwijderen
Ja mag niet stemmen in polls
Je mag geen attachments plaatsen in dit forum
Je mag bestanden downloaden in dit forum


Powered by phpBB © 2001, 2002 phpBB Group and phpBB SEO