-         

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

Thema: SRF02 Hexcode

  1. #1
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    34
    Beiträge
    4.528
    Blog-Einträge
    1

    SRF02 Hexcode

    Anzeige

    Hallo zusammen

    für meinen kleinen SRF02 Suche ich gerade den Hexcode um den anzusteuern. Leider finde ich nur komplette Programme wo die einzelnen Hexzahlen für die Steuerung irgendwo versteckt sind.

    Soweit ich das Datenblatt verstehe:

    Adresse: 0xE0
    Starten: 0x51

    Aber wie kann ich die Register ansprechen? Die werden nicht als Hexzahlen angegeben

    Hat jemand die Lösung?

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    24558
    Alter
    39
    Beiträge
    1.356
    Hallo Hanno,

    das Leseregister wird einfach mit "2" abgefragt, bei Slave_read das Slave-Id +1 nicht vergessen:


    ...
    waitms 65

    I2cstart
    I2cwbyte 0xE0 (dec 224)
    I2cwbyte 2 (dec)
    I2cstop

    I2cstart
    I2crbyte Slaveid_read
    ... High Byte abfragen, ACK
    ....Low Byte abfragen, NAck
    I2cstop

    Damit liest Du automatisch ab Register 2, danach auch gleich das Register3 mit aus.
    Dann wird es hier im Beispiel an die Funktion zum zusammen fügen übergeben, der aus den beiden Byte-Werten einen Integer macht und dann den richtigen Entfernungswert ausgibt.

    (Die Beispieldateien in Bascom fürs RN_Control von:
    http://www.shop.robotikhardware.de/s...roducts_id=168 )
    Geändert von HeXPloreR (05.03.2014 um 21:49 Uhr)
    "Es ist schwierig, jemanden dazu zu bringen, etwas zu verstehen, wenn er sein Gehalt dafür bekommt, dass er es nicht versteht" [Upton Sinclair] gez-boykott

  3. #3
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    34
    Beiträge
    4.528
    Blog-Einträge
    1
    @Hexplorer funktioniert so leider nicht, denn ich verwende gerade keinen µC sondern meinen I2C adapter. daher brauche ich alles genau in Hexwerten.

    Allerdings glaube ich, dass ich im Moment noch daran scheitere den Sensor überhaupt messen zu lassen, denn wenn ich das richtig verstehe müsste die LED bei jeder Messung aufleuchten. Sprich es würde sich ein sehr schneller blinken ergeben, wenn der Sensor misst. Nur leider leuchtet meine LED gerade mal beim Einschalten kurz (Adresscodierung) auf und dann tut sie gar nichts mehr.

    Bisher habe ich es mit dem Adapter noch nicht geschafft Sensoren auszulesen, nur schreiben klappt ganz wunderbar.

    Ich versteh einfach nicht wie oder was mit diesen "Register" gemeint ist. bzw. an welcher Position ich auslesen muss.
    Geändert von HannoHupmann (05.03.2014 um 21:59 Uhr)

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    24558
    Alter
    39
    Beiträge
    1.356
    Naja, der Hexwert für dezimal 2 ist ... 0x02 , oder Und Slave-Id_read = 0xE1 (dec 225)

    Aber dann musst du dein ergebnis noch selbst ausrechnen, weil es ja nur als 2 einzelne bytes reinkommt.

    Vermutlich auch hier wieder das Problem das der I²C Adapter nicht selbst die PullUps verbaut hat? Hast Du welche eingefügt?
    Geändert von HeXPloreR (05.03.2014 um 22:02 Uhr)
    "Es ist schwierig, jemanden dazu zu bringen, etwas zu verstehen, wenn er sein Gehalt dafür bekommt, dass er es nicht versteht" [Upton Sinclair] gez-boykott

  5. #5
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    34
    Beiträge
    4.528
    Blog-Einträge
    1
    Der Adapter hat Pull ups verbaut, daran liegt es nicht.

    Wenn ich S E0 00 51 P sende dann bekomm ich auch drei mal Ack zurück.
    Danach versuche ich S E1 ??? P und bekomme nur scheinbar willkührliche Hexwerte zurück und "Wrong command"

    - - - Aktualisiert - - -

    Huch warum dass? Ich dachte das Register 0x00 ist für den Befehl zuständig
    Muss ich vor jeder Abfrage des Messwerts ein Befehl 51 schicken?

    Abgesehen davon will ich ja noch auslesen, aber irgendwie bekomm ich da keine vernünftigen Werte angezeigt .

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    24558
    Alter
    39
    Beiträge
    1.356
    versuche mal einzeln rasuzuholen: S E1 03 P und dann noch S E1 04 P. Ich kenn mich mit TerminalI²C nicht so aus, ich würde selbst das RN-Control programm vorziehen. Kann sein das du nur ein Register zur Zeit lesen kannst?
    "Es ist schwierig, jemanden dazu zu bringen, etwas zu verstehen, wenn er sein Gehalt dafür bekommt, dass er es nicht versteht" [Upton Sinclair] gez-boykott

  7. #7
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    34
    Beiträge
    4.528
    Blog-Einträge
    1
    Mhm nein eigentlich nicht. Allerdings habe ich jetzt scheinbar eine Lösung gefunden. Zumindest bekomme ich bei S E1 04 P folgende Anzeige:
    05 00 1B 00

    So ganz versteh ich jetzt die Umrechnung in die Entfernung nicht: denn
    Register 0: 05
    Register 1: 00
    Register 2: 1B
    Register 3: 00
    Stimmt das so?

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2004
    Beiträge
    451
    Du musst insgesammt 3 pakete senden, einmal um die messung zu starten, dann um das Register das du auslesen willst festzulesen und dann ein read um die daten zu lesen.

    also
    S ID 0 51h P (kp woher die 0 kommt, steht so im datenblatt)

    dann Register festlegen:
    S ID 2 P

    und dann das lesen:
    S ID+1 ack und nack und stop (keine ahnung, wie das bei deinem I2C dingens geht)

    Alles von hier Seite 6
    http://www.robotikhardware.de/download/srf02doku.pdf

    E: Am einfachsten wäre wohl register 1 auszulesen, denn das sollte immer 0x80 zurück senden, wenn das klappt, würde ich weiter versuchen.

    Also dann mit S ID 1 P
    S ID+1 nack P

  9. #9
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    34
    Beiträge
    4.528
    Blog-Einträge
    1
    Hallo robin,

    geht ein wenig einfacher zum Glück. Ich kann S E1 23 p alle Register auslesen und anzeigen. Es kommt dann sowas:
    KKK05 00 1D 00 0F 00 00 00 00 00 00 00 32 04 00 BB 06 0B 05 0F 00 00 00 00 00 05 51 32 8B 00 1E 37 FF FF AF
    Wobei KKK die Bestätigung für S E0 0 51 p ist danach kommt immer 00 (egal wie weit der Abstand ist) und dann ändert sich 1D je nach Abstand zum Hindernis. Der Rest bleibt gleich zubindest bis 32 04...

    ich vermute sehr stark, dass sich der Längenwert in den 1D verbirgt wobei ich aber noch nicht weiß wie die Umrechnung ist? Wir der Wert gleich direkt in cm angegeben und ich muss nur 1D in Dezimal konvertieren?

    Würde bisher ganz gut hinkommen bei kleinen Werten zwischen 15 und 30cm
    EDIT: Passt auch für große Werte. Ist zwar noch nicht die eleganteste Lösung aber sie funktioniert.

    - - - Aktualisiert - - -

    Danke noch mal an alle die geholfen haben. Die Erkenntnis habe ich jetzt mal im RN-Wiki festgehalten bei meinem Adapter Threat.
    Geändert von HannoHupmann (05.03.2014 um 23:12 Uhr)

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von Andre_S
    Registriert seit
    26.06.2005
    Beiträge
    310
    Hallo!

    Ich weiß nicht ob sich Dein I²C Adapter ähnlich verhält, aber ich kann bei meinem von ELV mit folgendem String
    „SE0 00 51 P L0015 SE0 01 SE1 03 P“ meine SRF08 auslesen.

    Da Du nur High/Low als Entfernungsbyte ab Register 2 benötigst und 65ms Pause zwischen Start und auslesen, könnte folgende Eingabe funktionieren:
    „SE0 00 51 P L0045 SE0 02 SE1 02 P“ (Ein Versuch wäre es wert)

    „SE0 00 51 P“ sendet die Aufforderung zum Messen in Zentimeter.
    „L0045“ wäre die Pausenzeit bei Einstellung des Adapters (Auslieferungszustand ELV) und „SE0 02 SE1 02 P“ der Lesebefehl von 2 Byte ab Register 02.


    Gruß André
    Geändert von Andre_S (06.03.2014 um 16:24 Uhr)
    http://home-robotics.de
    ____________________________

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Srf02 an Rp6
    Von Morpheus1997 im Forum Robby RP6
    Antworten: 5
    Letzter Beitrag: 19.08.2012, 18:48
  2. SRF02 - I2C
    Von oratus sum im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 07.06.2010, 18:18
  3. Srf02 an I2C
    Von Tenorm im Forum Sensoren / Sensorik
    Antworten: 10
    Letzter Beitrag: 22.03.2008, 15:53
  4. SRF02 an RP6
    Von WarChild im Forum Robby RP6
    Antworten: 5
    Letzter Beitrag: 28.01.2008, 23:55
  5. SRF02 apathisch
    Von Vinter im Forum Sensoren / Sensorik
    Antworten: 6
    Letzter Beitrag: 08.08.2007, 09:17

Berechtigungen

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