time of flight sensor

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • time of flight sensor

      Good morning,I try to use a time of flight sensor (type VL53L0X) but the reading results are false and unstable. (at 30 cm, it gives me +- 6cm error)! Does anyone have any experience with this type of sensor?Thank you for your response.....BernardThe source cod:do Gosub LectureGosub Evaluer
      Gosub Resultat

      Lecture:
      I2cstart
      I2cwbyte Cjvl53_write
      I2cwbyte &H00
      I2cwbyte &H01
      I2cstop
      Waitms 5
      I2cstart
      I2cwbyte Cjvl53_write
      I2cwbyte &H14
      Waitms 5
      I2crepstart
      I2cwbyte Cjvl53_read
      For I = 1 To 11
      I2crbyte Daten(i) , Ack
      Next
      I2crbyte Daten(12) , Nack
      I2cstop
      Return

      Evaluer:

      I = Daten(1) And &H78
      I = I / 8
      Select Case I
      Case $00 : Print "Data OK!"
      Case $01 : Print "VCSEL CONTINUITY TEST FAILURE!"
      Case $02 : Print "VCSEL WATCHDOG TEST FAILURE!"
      Case $03 : Print "NO VHV VALUE FOUND!"
      Case $04 : Print "MSRC NO TARGET!"
      Case $05 : Print "SNR CHECK!"
      Case $06 : Print "RANGE PHASE CHECK!"
      Case $07 : Print "SIGMA THRESHOLD CHECK!"
      Case $08 : Print "TCC!"
      Case $09 : Print "PHASE CONSISTENCY!"
      Case $0a : Print "MIN CLIP!"
      Case $0b : Print "RANGE COMPLETE!"
      Case $0c : Print "ALGO UNDERFLOW!"
      Case $0d : Print "LGO OVERFLOW!"
      Case $0e : Print "RANGE IGNORE THRESHOLD!"
      Case Else Print "Hurz " ; Hex(i)
      End Select
      Return

      Resultat:
      Mesure_ir = Daten(11) * 256
      Mesure_ir = Mesure_ir + Daten(12)
      print Mesure_ir
      waitms 100
      loop
    • Der Chip ist wohl ein schlechter Scherz :cursing:
      Hier hat auch jemand versucht die Register zu finden.
      Ohne Datenblatt kann man nur raten. Ein Init und Calibration wurde ausgeführt?
      An anderer Stelle wurden auch stark abweichende Ergebnisse gezeigt. Da bleibt noch viele Male zu messen um vielleicht ein brauchbares Ergebnis zu bekommen.
      Sind die 5ms nötig? Müssen 12 Daten eingelesen werden um 3 zu nutzen?
      Bringt das andere Ergebnisse?

      Source Code

      1. Lecture:
      2. I2cstart
      3. I2cwbyte Cjvl53_write
      4. I2cwbyte &H00
      5. I2cwbyte &H01
      6. I2cstop
      7. Waitms 5 'Waitms 1 ???
      8. I2cstart
      9. I2cwbyte Cjvl53_write
      10. I2cwbyte &H14
      11. I2crepstart
      12. I2cwbyte Cjvl53_read
      13. I2crbyte Daten(1) , Nack
      14. if Daten(1) <> 1 then
      15. I2cstop
      16. Return
      17. end if
      18. I2crepstart
      19. I2cwbyte Cjvl53_write
      20. I2cwbyte &H1E
      21. I2crbyte Daten(11) , Ack
      22. I2crbyte Daten(12) , Nack
      23. I2cstop
      24. Return
      Display All
    • Thank you for taking the time to respond,I'm still wondering because I see demonstrations on "Arduino" forums that seem to work! (with specially dedicated libraries) which I cannot find for Bascom and the documentation is very succinct from the manufacturer! Unfortunately, I don't know the C language at all.Indeed, my measurements are very irregular, +- 1 cm ~ at 30cm distance.....Bernard