-         

Ergebnis 1 bis 8 von 8

Thema: unrealistische Werte beim SRF10

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.03.2004
    Ort
    NRW
    Alter
    37
    Beiträge
    8

    unrealistische Werte beim SRF10

    Anzeige

    Hallo zusammen.

    Ich betreibe einen SRF10 an meinem C-Control I. Der Messwert soll in cm ausgegeben werden. Dazu schreibe ich in das Command Register die 81.
    Bei Abständen bis zu einem Meter bekomme ich noch ganz normale Werte. Aber darüber scheint irgend etwas nicht zu stimmen. Der höchste Wert für Low Range war bisher 161 und das High Register ist immer nur 0.
    Code:
    '-----------------Abfrage des Sensors ------------------------
    
    SDA = ON
    SCL = ON
    
    '        Starte Messung
             gosub Start
             Daten = 224
             gosub I2C_Write
             Daten = 0
             gosub I2C_Write
             Daten = 81
             gosub I2C_Write
             gosub Stop
             pause 10
    
    '        Lese Ergebnis Low
             gosub Start
             Daten = 224
             gosub I2C_Write
             Daten = 3
             gosub I2C_Write
             gosub Stop
             gosub Start
             Daten = 225
             gosub I2C_Write
             gosub I2C_Read
             Low = Daten
             print Low
             gosub NoAck
             gosub Stop
    
    
    '        Lese Ergebnis High
             gosub Start
             Daten = 224
             gosub I2C_Write
             Daten = 2
             gosub I2C_Write
             gosub Stop
             gosub Start
             Daten = 225
             gosub I2C_Write
             gosub I2C_Read
             High = Daten
             print High
             gosub NoAck
             gosub Stop
    Zu Testzwecken gebe ich die beiden Werte an die serielle Schnittstelle aus. Ich hoffe das mir jemand einen Tip geben kann.

    Vielen Dank im voraus.

    Gruß
    Matthias

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Beim SF08 les' ich beide Werte auf einmal, und folgende reihenfolge funktioniert jedenfalls,
    Code:
          I2cstart
          I2cwbyte Tad      ' write addr
          If Err = 1 Then
             I2cstop
          Else
             I2cwbyte 2     ' register
             I2cstop         
             Incr Tad          ' --> read addr
             I2cstart
             I2cwbyte Tad
             I2crbyte Msb , Ack
             I2crbyte Lsb , Nack
             I2cstop
    is zwar BasCom, aber trotzdem verständlich, denk ich
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    24.03.2004
    Ort
    NRW
    Alter
    37
    Beiträge
    8
    Danke für die schnelle Antwort. Leider werde ich nicht ganz schlau daraus. Wäre nett, wenn du mir das vorgehen etwas genauer erklären könntest.

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Gut, ich nehm jetzt den Code von dir
    Code:
    '        Lese Ergebnis Low & High 
             gosub Start         
             Daten = 224 
             gosub I2C_Write 
             Daten = 2 
             gosub I2C_Write 
             gosub Stop 
    
             gosub Start 
             Daten = 225 
             gosub I2C_Write 
             gosub I2C_Read      
             gosub Ack              // ich hoff, das gibts auch bei dir
             high = Daten 
             print high
             gosub I2C_Read 
             gosub NoAck    
             Low = Daten 
             print Low 
             gosub Stop
    Ich weiß nicht, wie es bei dir mit der Sub "Ack" steht, die sollte es aber geben
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Gast
    Danke. Das Ergebnis bleibt aber leider das gleiche. Ich bekomme keine Werte über 151. Ich glaube schon, daß der Sensor einen weg hat. Hatte jemand ähnliche Erfahrungen gemacht?

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Hi, so schnell geben wir nicht auf.
    Beim SF08 bekamen wir erst sinnvolle werte nachdem wir beim Start initialisiert haben:
    Code:
             gosub Start 
             Daten = 224 
             gosub I2C_Write 
             Daten = 2 
             gosub I2C_Write 
             Daten = 100  // Range 
             gosub I2C_Write 
             gosub Stop 
    UND
             gosub Start 
             Daten = 224 
             gosub I2C_Write 
             Daten = 1 
             gosub I2C_Write 
             Daten = 1  // GAIN
             gosub I2C_Write 
             gosub Stop
    Dieses "151": in welchem Wert steht das drinnen High oder Low ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    24.03.2004
    Ort
    NRW
    Alter
    37
    Beiträge
    8
    Ja die 151 standen im Low byte.

    Wenn ich den letzten Tip befolge, kommen recht brauchbare Werte heraus. Das einzige was mir jetzt noch Probleme bereitet, sind Fehlmessungen Aufgrund der Ausbreitung des Schallkegels. Da muß ich wohl noch etwas rumprobieren.

    Vielen Dank für die schnelle Hilfe.

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Na dann, ev. bis morgen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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