HC-SR04 Ultrasone sensor – afstandsmeter

Hardware die niet past in bovenstaande onderwerpen
Berichten: 8
Geregistreerd: 25 Okt 2017, 16:39

HC-SR04 Ultrasone sensor – afstandsmeter

Berichtdoor henkdruiven » 26 Okt 2017, 12:49

Graag wil ik mijn ervaring delen met anderen betreffende de HC-SR04 Ultrasone sensor.

Ik heb me laten verleiden om enkele smaken van deze sensor aan te schaffen. Waaronder de standaard HC-SR04, de waterdichte JSN-SR04T en de JSN-SR04T met kabel

Met elk van deze sensors had ik het probleem dat in enkele gevallen (procenten) een meting een 0 als afstand opleverde terwijl dat zeker niet het geval was. Voor mij maakte het deze sensor onbruikbaar voor het doel waarvoor ik 'm wilde gebruiken.

Als er meer mensen zijn met de zelfde ervaring dan hoor ik dat graag.

Af en toe probeerde ik ze weer eens uit maar altijd met het zelfde resultaat. Totdat ik tot de volgende werkzame oplossing kwam;

Als ik namelijk een meting vooraf laat gaan door een dummy-meting dan heb ik nergens meer last van. Zie het volgende voorbeeld. Vanwege zijn afmetingen gebruik ik een module als de ATTINY85
Op de Digispark is een ultrasone module aangesloten en een passieve piezo zoemer. Afhankelijk van de afstand piept het apparaatje met korte of langere tussenpozen.

Code: Alles selecteren
#include <NewPing.h>

#define TRIG_PIN 1
#define ECHO_PIN 0
#define MAX_DISTANCE 250
#define BUZ_PIN 2
#define TIMESTEP_MULT 4

unsigned int distance= 0;

NewPing sonar( TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  // put your setup code here, to run once:
  pinMode(BUZ_PIN, OUTPUT);
  digitalWrite(BUZ_PIN, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:
  distance = readPing( );
  delay( distance* 3); // Wachttijd afhankelijk van de afstand.
  for( int i= 0; i< 50; i++) // Piep
  {
    digitalWrite(BUZ_PIN, LOW);
    delayMicroseconds( 150);
    digitalWrite(BUZ_PIN, HIGH);
    delayMicroseconds( 150);
  }
}

int readPing( ) {
  int cm= sonar.ping_cm( ); // Dummy meting
  cm= sonar.ping_cm( );
  if( cm== 0) cm= MAX_DISTANCE;
  return cm;
}

Advertisement

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten