- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: bascom und ds1820

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.03.2004
    Beiträge
    8

    bascom und ds1820

    hallo

    habe diese soft im netz gefunden. Damit soll man die temp. eines ds1820 auslesen können. Leider funkt das bei mir nicht. Auf dem display kommt nur Temp: und 0.0C. Habe auch mit einem mega8 getestet genau das selbe.
    Vieleicht weiss jemand was ich falsch mache und kann mir helfen.

    '*******************************************
    '* Compiler : Bascom *
    '* Hardware : AVR-Ctrl *
    '* Temp.Sens : DS1820 *
    '* Chip type : MEGA128 *
    '* Clock frequency : 16,000000 MHz *
    '* http://www.mikrocontroller.com *
    '*******************************************

    '$include "ac_lcd.inc"
    $regfile = "m128def.dat"
    $crystal = 16000000

    Config 1wire = Portc.0 'use this pin

    Dim Ar(2) As Byte , A As Byte , I As Byte , Temperatur As Integer
    Dim Halb As Byte
    Cls

    Lcd "Temp:"
    Do
    Waitms 300
    1wreset 'reset the device
    1wwrite &HCC 'read ROM command
    1wwrite &H44
    Waitms 200 'read ROM command
    1wreset 'reset the device
    1wwrite &HCC 'read ROM command
    1wwrite &HBE 'read ROM command
    For I = 1 To 2
    Ar(i) = 1wread() 'place into array
    Next

    Locate 2 , 1
    Temperatur = Ar(1)

    If Ar(2) > 0 Then Temperatur = 0 Else Shift Temperatur , Right

    Lcd Temperatur ; ".";

    Halb = Ar(1) And 1

    If Halb = 1 Then Lcd "5" Else Lcd "0"

    Lcd " C"
    Loop

    End

    Mfg. team

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    35
    Beiträge
    1.614
    Hi

    Wie sieht denn deine Schaltung aus?

    Kannste nen Bild machen?

    Oder wirklich am besten die Schaltung posten!

    MfG
    Martin

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    36
    Beiträge
    557
    $regfile = "m128def.dat"
    Das Prog ist für den MEGA128 gemacht. Wenn du das auf einem anderen Controller testen willst, musst du die regfile ändern.

    EDIT:
    Ich denke, du musst in der "ac_lcd.inc"-Datei auch die Taktfrequenz entsprechend anpassen.
    "Der Mensch wächst am Widerstand" (Werner Kieser)

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    36
    Beiträge
    557
    So, ich hab mir grad mal das Datenblaat runtergeladen und mir ist folgendes aufgefallen:

    Waitms 300
    1wreset 'reset the device
    1wwrite &HCC 'read ROM command <- FALSCHER BEFEHL!
    1wwrite &H44
    Waitms 200 'read ROM command
    1wreset 'reset the device
    1wwrite &HCC 'read ROM command <- FALSCHER BEFEHL!
    1wwrite &HBE 'read ROM command

    Versuchs mal mit 1wwrite &H33. Ich weiß nicht, obs funktioniert, aber einen Versuch wärs wert.
    "Der Mensch wächst am Widerstand" (Werner Kieser)

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    16.03.2004
    Beiträge
    8
    hallo

    danke für die antworten fehler gefunden. Es gehört ein wiederstand vom ausgang des ds1820 auf plus.

    Mfg. theam

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    16.03.2004
    Beiträge
    8

    ds1820

    hallo

    wieder einmal. Da es nun doch noch sommer geworden ist und ich im urlaub zuhause bin und natürlich viiiiel zeit habe, möchte ich mich wieder mit Atmel und Bascom beschäftigen.
    Da ich es ja entlich geschaft habe mit ds1820 die temp. auf einem lcd displ. anzuzeigen währe die nächste aufgabe wie gehts mit mehreren Sensoren und was mir noch wichtiger ist wie kann ich negative temperaturen anzeigen. Habe ja schon das datenblatt angeschaut aber zu einen erfolg bin ich noch nicht gekommen.
    Währe schön wenn mir wer helfen könnte.

    Mfg. team

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    35
    Beiträge
    1.614
    Hallo,

    Das steht eigentlich beides im Datenblatt........

    1. Wenn du mehrere Sensoren hast hängst du sie alle an den einen Pin des µc. Dann musst du noch ins Prog schreiben:

    Code:
    maxsensors = 1wirecount()
    Ar(1) = 1wsearchfirst()
    For i = 2 to maxsensors
       Ar(i) = 1wsearchnext()
    Next i
    2. Wenn du wissen willst, ob deine Temperatur Negativ ist, musst du erst 8 Bit lesen. Wenn diese 8 Bits alle 1 oder alle 0 sind weisst du erstmal, dass es sich bei den Bits nicht um Zahlen, sondern ums Vorzeichen handelt. Beispiel: 11111111 = neg. Temp.; 00000000 = pos. Temp.

    Ich hoffe das hilft dir!

    Martin

  8. #8
    Hi Erstmal,

    ich hab das mit der Temperaturmessung mit DS1820 hinbekommen, wie normal angegeben 0,5°C Genauigkeit.
    Nun hab ich im Netz verschiedentlich gelesen, das der auch 0,1°C kann!
    Nur wie das steht natürlich nie dabei. Hat da jemand evtl. nen tip für mich?

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    35
    Beiträge
    1.614
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  10. #10
    Gast
    Hallo zusammen!
    Auch ich habe den Mega8 mit dem DS18S20 zum Laufen gebracht. Jetzt möchte die Temperaturanzeige nur "so nebenbei" haben.

    Wichtiger sind andere Programmfunktionen, die schnell abgearbeitet werden sollen. Wenn ich den DS18S20 per Interrupt auf einen Timer lege, hält das Hauptprogramm ja solange an, wie die Interruptroutine (also das Auslesen des Sensors) läuft. Und das sind ja schon aufgrund der beiden Wartezeiten insgesamt 500mS!

    Baue ich die Sensorabfrage in das Hauptprogramm ein, warte ich ja auch mind. 500ms. Wie kann ich den DS18S20 "unabhängiger" auslesen, sodaß mein Hauptprogramm nicht gestört wird? (Da war doch mal was mit Freilauftimern, oder???)

    Übrigens reicht es völlig, wenn die Temperaturanzeige alle 1-2 Sekunden aktualisiert wird.

    Hat jemand eine Idee für BASCOM?

    Vielen Dank!

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiTime Speicher und Akkus