-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 30

Thema: Probleme mit SRF10

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    189

    Probleme mit SRF10

    Anzeige

    Hallo!

    Ich hab mir neulich SRF10-Module von Roboter-teile.de (danke Jörg für die schnelle Lieferung ) bestellt und diese an meine C-Control angeschlossen, doch irgendwie wollen die nicht so richtig...
    Durch die Informationen, die hier im Roboternetz und im Internet zu finden sind, habe ich es zumindest schon geschafft, eine Messung zu starten, nur das Auslesen der Register will noch nicht so richtig.
    Mal kommen relativ gut aussehende Werte aus dem Low-Byte und mal sind es nur Nullen. High ist ständig 0.
    Am I²C-Bus kann es nicht liegen, da mein Kompass-Modul dort problemlos funktioniert...

    Vielleicht habt ihr ja noch ne Idee...

    Danke schon mal im Voraus.

    Mit freundlichen Grüßen

    Philipp


    Hier der Code:

    Code:
    Define SDA             Port[3]
    Define SCL             Port[4]
    
    Define I               Byte
    Define I2C_Daten       Byte
    Define I2C_Zaehler     Byte
    
    SDA = On
    SCL = On
    
    
    gosub I2C_Start
    I2C_Daten = 224
    gosub I2C_Write
    I2C_Daten = 2
    gosub I2C_Write
    I2C_Daten = 100    'Range
    gosub I2C_Write
    gosub I2C_Stop
    
    gosub I2C_Start
    I2C_Daten = 224
    gosub I2C_Write
    I2C_Daten = 1
    gosub I2C_Write
    I2C_Daten = 1       'Gain
    gosub I2C_Write
    gosub I2C_Stop
    
    #Loop
    
    gosub I2C_Start
    I2C_Daten = 224
    gosub I2C_Write
    I2C_Daten = 0
    gosub I2C_Write
    I2C_Daten = 81
    gosub I2C_Write
    gosub I2C_Stop
    
    Pause 10
    
    gosub I2C_Start
    I2C_Daten = 224
    gosub I2C_Write
    I2C_Daten = 3
    gosub I2C_Write
    gosub I2C_Stop
    gosub I2C_Start
    I2C_Daten = 225
    gosub I2C_Write
    gosub I2C_Read
    Print I2C_Daten 'LOW
    gosub NoAck
    gosub I2C_Stop
    
    gosub I2C_Start
    I2C_Daten = 224
    gosub I2C_Write
    I2C_Daten = 2
    gosub I2C_Write
    gosub I2C_Stop
    gosub I2C_Start
    I2C_Daten = 225
    gosub I2C_Write
    gosub I2C_Read
    Print I2C_Daten 'HIGH
    gosub NoAck
    gosub I2C_Stop
    
    Goto Loop
    
    
    '********************* I²C Standardroutinen*******************
    #I2C_Start
    SDA = OFF
    SCL = OFF
    return
    
    #I2C_Stop
    SDA = OFF
    SCL = ON
    SDA = ON
    return
    
    #I2C_Write
    for i = 1 to 8
        SDA = OFF
        if (I2C_Daten and 128) = 128 then SDA = ON
        pulse SCL
        I2C_Daten = I2C_Daten shl 1 '1 Bit nach links schieben
    next
    pulse SCL
    return
    
    #I2C_Read
    I2C_Daten = 0
    deact SDA
    for i = 1 to 8
        I2C_Daten = I2C_Daten shl 1
        SCL = ON
        if SDA then I2C_Daten=I2C_Daten + 1
        SCL = OFF
    next
    return
    
    #Ack
    SDA = 0
    pulse SCL
    return
    
    #NoAck
    SDA = 1
    pulse SCL
    return

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    189
    Ich hab irgendwie das Gefühl, das es mit der Ack, bzw. NoAck-Sache zusammenhängt...
    Hat nicht irgendeiner ne Idee? Ich hab schon alles ausprobiert, aber nichts hilft...

  3. #3
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.372
    Hast Du es hiermit schon verglichen?
    Manfred

    http://www.the-starbearer.de/Praxis/....htm#icdigital

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    189
    Ja... vom Inhalt in der For-Schleife ist es mit meinem Programm soweit identisch... es will aber irgendwie nicht funktionieren...

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo Philipp,

    nach dem Start der Messung muß man beim SRF10 70ms warten, bis das gültige Ergebnis vorliegt. Ich kenn die C-Control nicht so gut, bedeutet 'Pause 10' 10ms warten?

    Gruß Peter

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    189
    Hallo!

    Zitat Zitat von m.a.r.v.i.n
    nach dem Start der Messung muß man beim SRF10 70ms warten, bis das gültige Ergebnis vorliegt. Ich kenn die C-Control nicht so gut, bedeutet 'Pause 10' 10ms warten?
    Pause 10 bedeutet soweit ich weiß, dass er 10 mal den internen Timer (20ms) durchläuft...
    Bei Pause 50 stoppt das Programm dann für eine Sekunde...

    Philipp

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.09.2004
    Beiträge
    264
    Ich kenn die C-Control nicht so gut, bedeutet 'Pause 10' 10ms warten?
    Nein, es sind 10*20ms.

    mfg

    Stefan

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Vergleich einmal mit dem Beispiel. Und zwar wegen der Reihenfolge der abfragen (SFR08 /SFR10 = jacke wie hose)
    Du holst, glaub ich low und high einzeln ab. das wär nicht so gut.

    http://www.roboternetz.de/wissen/ind...ogrammbeispiel
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    189
    Hallo, Robert!

    Zitat Zitat von PicNick
    Du holst, glaub ich low und high einzeln ab. das wär nicht so gut.
    Ich hab mir noch mal dein Beispiel von hier angesehen und den Inhalt im Loop folgendermaßen verändert:

    Code:
    gosub I2C_Start
    I2C_Daten = 224
    gosub I2C_Write
    I2C_Daten = 0
    gosub I2C_Write
    I2C_Daten = 81
    gosub I2C_Write
    gosub I2C_Stop
    
    Pause 20
    
    gosub I2C_Start
    I2C_Daten = 224
    gosub I2C_Write
    I2C_Daten = 2
    gosub I2C_Write
    gosub I2C_Stop
    gosub I2C_Start
    I2C_Daten = 225
    gosub I2C_Write
    gosub I2C_Read
    gosub Ack
    Print I2C_Daten 'High
    gosub I2C_Read
    gosub NoAck
    Print I2C_Daten 'Low
    gosub I2C_Stop
    Nun fragt das Programm nicht mehr getrennt ab, es kommen aber überwiegend Nullen zurück...
    Erst wenn ich mit meiner Hand nah über den Sensor gehe, ändern sich die Werte im Low-Byte auf Zahlen bis etwa 20...
    High ist weiterhin 0.

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Du mußt mal schauen/messen ob "Hand ganz nahe" nicht vielleicht eh' etwa 20 Zentimeter sind.
    Ich würde mir die Sache mit "Range" u. "Gain" im DS mal genau anschauen, Vielleicht ist der Junge einfach schwerhörig
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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