VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von e69-fan »

Hallo Franz,

auf der unendlichen Suche nach einer optischen Belegtmeldung bin ich über diesen interessanten Sensor gestolpert.

https://www.youtube.com/watch?v=oIw9bvZLoEY


Könnte ich diesen Freitag, gegen Mittag den APDS-9960 - Sensor bei Dir Abholen?
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von Admin »

Ja, kannst du gerne kommen. Aber rufe vorher an, nicht dass ich dann doch noch irgendwo hingefahren bin. Aber Freitag Mittag ist eigentlich die Irmi mit dem Auto im Penzberg, da bin ich wohl zuhause.

Der Sensor VL53L0X in dem Youtube Video ist interessant, weil er recht ganu misst und bis etwa 2 Meter geht. Den werde ich mir mal schießen. Ausserdem geht er mit 5 Volt, die haben ja bei mir den Vortritt. :oo:

Servus, wünsche gut zu schlafen
Franz :(V):
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von Admin »

Da habe ich mir mal zwei geholt. Die sollten am Dienstag hier sein. Ich finde die interessant, weil sie sehr genau messen. Ich habe mir die geholt die max 2 Meter messen. Und natürlich bis 5 Volt vertragen.

Franz
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von e69-fan »

Hey, super - ich hoffe das mit diesen Sensoren der Bahnübergang funktioniert.

:(V):
Grüße aus der Heimat der E69
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von e69-fan »

Guten Morgen,

schicke mir doch Bitte mal den Link der Bestellung.

Ich benötige auch noch einige Teile für den Arduino.

Viel Sonne ☀️☀️☀️ und warmes Poolwasser wünschen Euch - W&H
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von Admin »

Das ist der Link.

Habe gerade wieder meine Std. Rudern hinter mich gebracht. :(oo): Der Pool muß noch auf mich warten. der ist mir zu kalt. Nur vereinzelte warme Tage reichen nicht, dass er meine Wunsch-Themperaturen bekommt. :agt:
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von e69-fan »

Hallo Franz,

ich will ja nicht den Teufel 😈 an die Wand malen

Schau Dir mal die Platinenbeschriftung der ersten beiden Bilder an. ????

Also vorher unbedingt überprüfen.

Schönen Abend
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von Admin »

Gehts genauer? Ich weiß nicht worauf du anspielst? Kann nichts entdecken.

Franz

Das eine Bild ist Horizontal gespiegelt vom andern. Deshalb die Spiegelschrift. Also da war jemand zu dämlich zur Bildbearbeitung. Mehr kann ich da nicht sehen. :???:
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von Admin »

Soooo, Sensoren sind angekommen und funktionieren.

Hier mal das Programm, mit dem ich es jetzt gerade mal zum Test betreibe:

Code: Alles auswählen

/* Dieses Beispiel zeigt, wie man eine Einzelschussreichweite erhält
  Messungen vom VL53L0X. Der Sensor kann optional sein
  mit unterschiedlichen Ranging-Profilen konfiguriert, wie in . beschrieben
  das VL53L0X API-Benutzerhandbuch, um eine bessere Leistung für
  eine bestimmte Anwendung. Dieser Code basiert auf den vier
  "SingleRanging"-Beispiele in der VL53L0X-API.

  Die Entfernungsmesswerte sind in mm angegeben. */

#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
#include <LiquidCrystal_I2C.h> // LCD Display
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int messung = 0;
// Entkommentieren Sie diese Zeile, um den Langstreckenmodus zu verwenden. Diese
// erhöht die Empfindlichkeit des Sensors und verlängert seine
// potenzielle Reichweite, erhöht aber die Wahrscheinlichkeit, dass
// eine ungenaue Lesung aufgrund von Reflexionen von Objekten
// anders als das beabsichtigte Ziel. Es funktioniert am besten im Dunkeln
// Bedingungen.

//#define LONG_RANGE


// Entkommentieren Sie EINE dieser beiden Zeilen, um zu erhalten
// - höhere Geschwindigkeit auf Kosten einer geringeren Genauigkeit OR
// - höhere Genauigkeit auf Kosten einer geringeren Geschwindigkeit

//#define HIGH_SPEED
#define HIGH_ACCURACY


void setup()
{
  Serial.begin(9600);
  Wire.begin();
  lcd.begin(20, 4);
  lcd.backlight();
  lcd.clear();
  lcd.setCursor (3, 0);
  lcd.print (F("Abstandsmessung"));
   lcd.setCursor (3, 1);
  lcd.print (F("mm:"));

  sensor.setTimeout(500);
  if (!sensor.init())
  {
    Serial.println("Failed to detect and initialize sensor!");
    while (1) {}
  }

#if defined LONG_RANGE
  // Verringern Sie die Begrenzung der Rücksendesignalrate (Standard ist 0,25 MCPS)
  sensor.setSignalRateLimit(0.1);
  // Laserpulsperioden erhöhen (Standardwerte sind 14 und 10 PCLKs)
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
#endif

#if defined HIGH_SPEED
  // Timing-Budget auf 20 ms reduzieren (Standard ist etwa 33 ms)
  sensor.setMeasurementTimingBudget(20000);
#elif defined HIGH_ACCURACY
  // increase timing budget to 200 ms
  sensor.setMeasurementTimingBudget(200000);
#endif
}

void loop()
{
  messung = (sensor.readRangeSingleMillimeters());
  lcd.setCursor (10, 1);
  lcd.print (F("     "));
  lcd.setCursor (10, 1);
  lcd.print (messung);
  //Serial.print(sensor.readRangeSingleMillimeters());
  if (sensor.timeoutOccurred()) {
    Serial.print(" TIMEOUT");
  }

  Serial.println();
}
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: VL53L0X ToF Sensor Laser Entfernungsmessung am Arduino

Beitrag von Admin »

Habe jetzt nochmal was geändert. Jetzt wird aus 10 Messergebissen ein Durchschnitt gebildet und angezeigt. Da wird natürlich nur noch alle 2 Sekunden aktualisiert, weil ja jede Messung 0,2 Sek. dauert.

Code: Alles auswählen

/* Dieses Beispiel zeigt, wie man eine Einzelschussreichweite erhält
  Messungen vom VL53L0X. Der Sensor kann optional sein
  mit unterschiedlichen Ranging-Profilen konfiguriert, wie in . beschrieben
  das VL53L0X API-Benutzerhandbuch, um eine bessere Leistung für
  eine bestimmte Anwendung. Dieser Code basiert auf den vier
  "SingleRanging"-Beispiele in der VL53L0X-API.

  Die Entfernungsmesswerte sind in mm angegeben. */

#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
#include <LiquidCrystal_I2C.h> // LCD Display
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int messung = 0;
int summe = 0;
int ergebnis = 0;
byte zaehler = 0;

// Entkommentieren Sie diese Zeile, um den Langstreckenmodus zu verwenden. Diese
// erhöht die Empfindlichkeit des Sensors und verlängert seine
// potenzielle Reichweite, erhöht aber die Wahrscheinlichkeit, dass
// eine ungenaue Lesung aufgrund von Reflexionen von Objekten
// anders als das beabsichtigte Ziel. Es funktioniert am besten im Dunkeln
// Bedingungen.

//#define LONG_RANGE


// Entkommentieren Sie EINE dieser beiden Zeilen, um zu erhalten
// - höhere Geschwindigkeit auf Kosten einer geringeren Genauigkeit OR
// - höhere Genauigkeit auf Kosten einer geringeren Geschwindigkeit

//#define HIGH_SPEED
#define HIGH_ACCURACY


void setup()
{
  Serial.begin(9600);
  Wire.begin();
  lcd.begin(20, 4);
  lcd.backlight();
  lcd.clear();
  lcd.setCursor (3, 0);
  lcd.print (F("Abstandsmessung"));
  lcd.setCursor (3, 1);
  lcd.print (F("mm:"));

  sensor.setTimeout(500);
  if (!sensor.init())
  {
    Serial.println("Failed to detect and initialize sensor!");
    while (1) {}
  }

#if defined LONG_RANGE
  // Verringern Sie die Begrenzung der Rücksendesignalrate (Standard ist 0,25 MCPS)
  sensor.setSignalRateLimit(0.1);
  // Laserpulsperioden erhöhen (Standardwerte sind 14 und 10 PCLKs)
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
#endif

#if defined HIGH_SPEED
  // Timing-Budget auf 20 ms reduzieren (Standard ist etwa 33 ms)
  sensor.setMeasurementTimingBudget(20000);
#elif defined HIGH_ACCURACY
  // increase timing budget to 200 ms
  sensor.setMeasurementTimingBudget(200000);
#endif
}

void loop()
{
  messung = (sensor.readRangeSingleMillimeters());
  ++ zaehler;
  summe = summe + messung;
  if (zaehler == 10) {
    ergebnis = summe / 10;

    lcd.setCursor (10, 1);
    lcd.print (F("     "));
    lcd.setCursor (10, 1);
    lcd.print (ergebnis);
    zaehler = 0;
    summe = 0;
  }
  //Serial.print(sensor.readRangeSingleMillimeters());
  if (sensor.timeoutOccurred()) {
    Serial.print(" TIMEOUT");
  }

  Serial.println();
}
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste