-         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Ich verzweifle hier gleich (DS1621)

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    16.10.2004
    Ort
    München
    Alter
    43
    Beiträge
    36

    Ich verzweifle hier gleich (DS1621)

    Anzeige

    Ich bin hier echt am verzweifeln.
    Also ich habe ein RN-Board und einen Temperatursensor DS1621
    Ich habe den Temperatursensor wie folgt an meinen AtMega32 angeschlossen.

    Code:
    DS1621     AtMega32
    SDA          PC1
    SCL          PC0
    GND         GND
    A0            GND
    A1            GND 
    A2            GND
    VDD         +5V
    Folgenden Code benutze ich zum testen.
    Da ich keinen RS232-Port am Laptop habe und ich mein erst heute gekauftes Display nicht anschließen kann, teste ich meinen ebenfalls heute gekauften Temperatursensor indem ich sage dass das Board, wenn eine Temperatur überschritten wird, piepen soll.

    Hier der Code den ich hier im Forum gefunden habe.

    Code:
    '-------------------------------------------------------------------------------
    '-----  Beispiel für das Auslesen des Temperatursensors DS1621/1631 ------------
    '                                                                       HR 2006
    '
    'Anmerkung: Dieses Beispiel ist sowohl für den 1621 als auch für den 1631
    'geeignet. Der 1631 wird dabei im 1621 Kompatibilitätsmodus betrieben.
    'Auf die Auswertung negativer Temperaturen wird verzichtet.
    '-------------------------------------------------------------------------------
    
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    
    $hwstack = 32
    $swstack = 32
    $framesize = 32
    
    Config Scl = Portc.0
    Config Sda = Portc.1
    
    Portc.0 = 1                                                 'Pin wird auf High, also 5V geschaltet
    Portc.1 = 1
    
    
    Sound Portd.7 , 400 , 450                                   'BEEP
    Sound Portd.7 , 400 , 250                                   'BEEP
    Sound Portd.7 , 400 , 450                                   'BEEP
    
    
    I2cinit                                                     'entbehrlich
    '-------------------------------------------------------------------------------
    Declare Sub Readtemp(byval Device As Byte)
    Declare Sub Convertvalue_komma1()
    
    Dim Value As Word
    Dim Ton As Integer
    Dim Convert_strg As String * 10
    
    Const Ds1 = 150                                             'ggf. anpassen
    '----------------------------- Hauptprogramm -----------------------------------
    
    Do
    Call Readtemp(ds1)
    Call Convertvalue_komma1()
    Print Convert_strg
    Waitms 500
    Loop
    
    End
    
    '----------------------------- Subroutinen -------------------------------------
    
    'Readtemp liest die Temperatur und stellt sie nach Aufruf in der Variable Value
    'in 10tel Grad zu Verfügung. Übergeben wird die Deviceadresse des Sensors.
    
    Sub Readtemp(byval Device As Byte)
    Local Deviceread As Byte
    Local Lowtemp As Byte
    Local Hightemp As Byte
    
    Deviceread = Device + 1
    
    I2cstart
    I2cwbyte Device
    I2cwbyte &HEE                                               'Temperaturmessung anstoßen
    I2cstop
    
    I2cstart
    I2cwbyte Device
    I2cwbyte &HAA                                               'Temperaturmessung Lesekommando
    I2cstop
    
    I2cstart
    I2cwbyte Deviceread
    I2crbyte Lowtemp , Ack                                      'LSByte holen (Ganze Grad)
    I2crbyte Hightemp , Nack                                    'MSByte holen (0,5 Grad Indikator)
    I2cstop
    
    Value = Lowtemp * 10
    If Hightemp = 128 Then
      Value = Value + 5
    End If
    
    If Hightemp > 10 Then
    Ton = 550
    End If
    
    
    If Hightemp > 40 Then
    Ton = 250
    End If
    
    
    
    
    End Sub
    
    '-------------------------------------------------------------------------------
    'Convertvalue_komma1 wandelt Value in einen String mit einer Nachkommastelle.
    'Es wird gezeigt wie ein Zahlenwert in ein String gewandelt wird und dieser
    'formatiert werden kann.
    'Alternativ kann natürlich auch die "/10, Mod 10 Methode" angewandt werden.
    
    Sub Convertvalue_komma1()
    
    Convert_strg = Str(value)
    Convert_strg = Format(convert_strg , " 0.0")
    
    End Sub
    '---------------------------------
    Das Problem ist nun dass er ständig piept.
    Bei Const Ds1 = 150 steht "gegebenenfalls anpassen"
    Anpassen auf welchen Wert?

    Ich hoffe mir kann einer helfen weil ich echt langsam die Geduld verliere.

    Danke

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.255
    Hallo ensacom,

    Anpassen auf welchen Wert?
    auf den Wert der Adresse (Datenblatt) plus dem eingestellten an den Adresspins (hier null)

    Sind externe Pullups vorhanden? Ohne die geht es nicht, Portc.0(1) = 1 ist sinnlos.

    Gruß, Michael

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    16.10.2004
    Ort
    München
    Alter
    43
    Beiträge
    36
    Also wie ich das verstanden habe, hat das RN-Board externe Pullups.
    Nur wie, was, wo stelle ich da was ein dass es geht?
    Wo sehe ich ob diese Pullups vorhanden sind?

    Habe hier https://www.roboternetz.de/wissen/index.php/RN-Control gesehen dass das mit dem Portc.0 = 1

    Muss ich da jetzt an SDA und SC1 Widerstände zwischenschalten?
    Wie groß sollten die denn dann sein?
    Ich stecke die Kabel einfach zum testen in die Leiste auf dem RN-Board

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.255
    Hallo ensacom,

    meines Wissens sind die Pullup-Widerstände auf dem Board schon vorhanden.

    Die Adresse laut Datenblatt muß mit der Adresse in deiner Software übereinstimmen, sonst geht es nicht.

    Gruß, Michael

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    16.10.2004
    Ort
    München
    Alter
    43
    Beiträge
    36
    Ja aber welche Adresse?
    Ich weiß auch gar nicht was ds1 bedeuten soll

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    55
    Beiträge
    5.790
    Blog-Einträge
    8
    Hallo

    Meinen attiny13 ohne Pipser, UART, Display oder LEDs debuge ich, indem ich die Messwerte ins eeprom schreibe und dieses dann per ISP auslese. Vielleicht hilft dir das. (EEProm-Beispielfunktionen gibts im Datenblatt)

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    16.10.2004
    Ort
    München
    Alter
    43
    Beiträge
    36
    Sollte halt wissen wie man das macht.
    Also wie schreibe ich die Werte ins eeprom und wie kann ich die mit Bascom auslesen?

    habe nur einen USB-ISP also keinen seriellen oder parallelen Port

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.255
    Hallo ensacom,

    Ja aber welche Adresse?
    hast du das Datenblatt des DS1621 gelesen?
    http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2737 Seite 8+9

    Ich weiß auch gar nicht was ds1 bedeuten soll
    das ist die o.g. Adresse

    Gruß, Michael

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    55
    Beiträge
    5.790
    Blog-Einträge
    8
    Hallo

    Leider kenne ich Bascom und seine Möglichkeiten nicht. Die Beispiele im Datenblatt sind in Assembler und C. Das sind aber nur ein paar Zeilen die sich bestimmt auch nach Bascom übertragen lassen. Hauptsächlich geht es dabei um das richtige Timeing beim EEProm-Schreiben.

    Wenn man nach "bascom AND eeprom" sucht, findet man z.B. diesen Thread:
    https://www.roboternetz.de/phpBB2/ze...ag.php?t=30446
    Scheinbar hat Bascom schon fertige Routinen:

    readeeprom und writeeeprom. Und es kann wohl Variablen direkt im EEProm anlegen:

    Dim a as eram byte
    dim b as eram word
    dim c as eram long

    Ich plapper aber nur nach...

    EEProm auslesen müßte mit einem USB-ISP-Interface funktionieren, allerdings weiß ich nicht, ob Bascom dies unterstützt. Wenn nicht, kannst du z.B. avrdude verwenden. Das kann auch USB-ISP-Interfaces ansprechen.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    16.10.2004
    Ort
    München
    Alter
    43
    Beiträge
    36
    Hm also das mit der Adresse ds1 verstehe ich nicht. Jetzt steht ja 150 im code. Keine Ahnung was da gemeint ist und welchen Wert ich eingeben muss. Ich bekomme keine Temperatur ausgelesen und es biept auch nichts.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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